如何使用与当前Linux shell不同的工作目录运行程序?

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

例如,我有一个二进制文件helloworld,它在当前目录中创建文件helloworld.txt

此文件位于目录/a

目前,我在目录/b中。我想启动运行。/a/helloworld的程序,并在第三个目录/c的某个地方获取helloworld.txt

按如下方式调用程序:

(cd/c;/a/helloworld)

括号导致生成子shell。然后,此子shell将其工作目录更改为/c,然后从/a执行helloworld。程序退出后,子shell终止,返回父shell的提示符,该提示符位于您启动的目录中

错误处理:为避免在未更改目录的情况下运行程序,例如,当拼写错误/c时,使执行helloworld有条件:

(cd/c&a/helloworld)

减少内存使用:要避免在hello world执行时子shell浪费内存,请通过exec调用helloworld

(cd/c&exec/a/helloworld)

[感谢Josh和Juliano提供了改进此答案的提示!]

发表评论