使用 Linux shell ,如何从与当前工作目录不同的工作目录启动程序?
例如,我有一个二进制文件helloworld,可hello-world.txt在 当前目录 中创建该文件。
helloworld
hello-world.txt
该文件在目录内/a。
/a
目前,我在目录中/b。我想开始运行程序,../a/helloworld并hello-world.txt在第三个目录中找到某个位置/c。
/b
../a/helloworld
/c
像这样调用程序:
(cd /c; /a/helloworld)
括号导致生成子壳。然后,该子shell将其工作目录更改为/c,然后helloworld从执行/a。程序退出后,子Shell终止,返回到您从其开始的目录中的父Shell提示符。
错误处理: 为了避免在不更改目录的情况下运行程序,例如,拼写错误时/c,请执行以下helloworld条件:
(cd /c && /a/helloworld)
减少内存使用: 为了避免在hello world执行期间子外壳浪费内存,请helloworld通过exec 调用:
(cd /c && exec /a/helloworld)
[感谢Josh和Juliano提供改善此答案的提示!]