我正在使用命令箱来获取文件。在采购之前,我正在使用相同的命令箱进行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(())
}
这是怎么回事?
我可以直接从终端中获取文件,而不会出现任何错误。
答案 0 :(得分:3)
source
是bash命令,它不是程序,因此无法像需要使用bash那样调用它:
Command::new("bash")
.arg("-c")
.arg(format!("source {}", alias_file))
.spawn()
.expect("Failed to source alias file");