diff options
| author | Matthias Krüger <matthias.krueger@famsik.de> | 2024-06-13 22:55:44 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-06-13 22:55:44 +0200 |
| commit | a685cdc34fb00cfa57bb41ebf7a98e62e485e6ec (patch) | |
| tree | 84bb55c7424eb01f42a5b3028e32b3478036f2a4 | |
| parent | f1586001ace26df7cafeb6534eaf76fb2c5513e5 (diff) | |
| parent | bd6fca201551382e12f08de37c1f67bc3deb968d (diff) | |
| download | rust-a685cdc34fb00cfa57bb41ebf7a98e62e485e6ec.tar.gz rust-a685cdc34fb00cfa57bb41ebf7a98e62e485e6ec.zip | |
Rollup merge of #123726 - jieyouxu:command-new-docs, r=Nilstrieb
Clarify `Command::new` behavior for programs with arguments I mistakenly passed program path along arguments as the same string into `Command::new` a couple of times now. It might be useful to explicitly highlight that `Command::new` intends to accept path to a program, not path to a program plus arguments. Also nudge the user to use `Command::arg` or `Command::args` if they wish to pass arguments.
| -rw-r--r-- | library/std/src/process.rs | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/library/std/src/process.rs b/library/std/src/process.rs index c926c89f7a9..f351dab78dc 100644 --- a/library/std/src/process.rs +++ b/library/std/src/process.rs @@ -629,6 +629,25 @@ impl Command { /// .spawn() /// .expect("sh command failed to start"); /// ``` + /// + /// # Caveats + /// + /// [`Command::new`] is only intended to accept the path of the program. If you pass a program + /// path along with arguments like `Command::new("ls -l").spawn()`, it will try to search for + /// `ls -l` literally. The arguments need to be passed separately, such as via [`arg`] or + /// [`args`]. + /// + /// ```no_run + /// use std::process::Command; + /// + /// Command::new("ls") + /// .arg("-l") // arg passed separately + /// .spawn() + /// .expect("ls command failed to start"); + /// ``` + /// + /// [`arg`]: Self::arg + /// [`args`]: Self::args #[stable(feature = "process", since = "1.0.0")] pub fn new<S: AsRef<OsStr>>(program: S) -> Command { Command { inner: imp::Command::new(program.as_ref()) } |
