【发布时间】:2020-02-17 04:14:55
【问题描述】:
std::process::Command::new("/usr/bin/sh")
.arg("-c")
.arg("vim")
.arg("file")
.spawn()
.expect("Error: Failed to run editor");
当我运行这段代码时,一个 vim 进程运行,编辑文件,虽然它没有在终端中打开(不确定确切的术语)我怎么可能/是否有可能在终端中实际打开 vim
【问题讨论】:
-
次要挑剔:sh 通常是
/bin/sh,而不是/usr/bin/sh。顺便说一句,真的有必要用 shell 运行vim吗?为什么不直接运行vim file?std::process::Command::new("vim").arg("file")… -
@phd 是的,我刚刚意识到关于 sh 的位置,当我在我的机器上运行
which sh时,它说 /usr/bin/sh,但在大多数情况下,包括我的测试计算机,它/bin/sh。至于在shell中运行的必要性,如果你要在没有shell的情况下运行vim ~/foo,那么它会尝试在目录中查找~,而不是主目录 -
您的
/bin是/usr/bin的符号链接,就像在许多现代Linux 发行版中一样。