使用Command从rust导出文件

时间:2019-05-04 06:12:12

标签: rust command-line-interface

我正在使用命令箱来获取文件。在采购之前,我正在使用相同的命令箱进行ls -a的操作。当我列出目录内容时,将存在要来源的文件。但是当我找到源文件时,找不到文件错误。

错误和日志:

     Running `target/debug/alias_cli h htop`
.       .alias      Cargo.lock  src
..      .idea       Cargo.toml  target
thread 'main' panicked at 'Failed to source alias file: Os { code: 2, kind: NotFound, message: "No such file or directory" }', libcore/result.rs:1009:5
note: Run with `RUST_BACKTRACE=1` for a backtrace.
./.alias%

代码:

fn source_alias_file(alias_file: &String) -> Result<(), Box<dyn Error>> {
    print!("{}", alias_file);
    Command::new("ls")
        .arg("-a")
        .spawn()
        .expect("Failed to list");

    Command::new("source")
        .arg(alias_file)
        .spawn()
        .expect("Failed to source alias file");

    Ok(())
}

这是怎么回事?

我可以直接从终端中获取文件,而不会出现任何错误。

1 个答案:

答案 0 :(得分:3)

source是bash命令,它不是程序,因此无法像需要使用bash那样调用它:

Command::new("bash")
    .arg("-c")
    .arg(format!("source {}", alias_file))
    .spawn()
    .expect("Failed to source alias file");