Skip to content

Commit

Permalink
Clarify Command::new behavior if passed programs with arguments
Browse files Browse the repository at this point in the history
  • Loading branch information
jieyouxu committed Jun 10, 2024
1 parent cf9de23 commit 02bf152
Showing 1 changed file with 19 additions and 0 deletions.
19 changes: 19 additions & 0 deletions std/src/process.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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()) }
Expand Down

0 comments on commit 02bf152

Please sign in to comment.