使用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提供了改进此答案的提示!]