一尘不染

如何从Linux Shell运行与当前工作目录不同的程序?

linux

使用 Linux shell ,如何从与当前工作目录不同的工作目录启动程序?

例如,我有一个二进制文件helloworld,可hello-world.txt当前目录 中创建该文件。

该文件在目录内/a

目前,我在目录中/b。我想开始运行程序,../a/helloworldhello-world.txt在第三个目录中找到某个位置/c


阅读 810

收藏
2020-06-02

共1个答案

一尘不染

像这样调用程序:

(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提供改善此答案的提示!]

2020-06-02