linux - 如何从 Linux shell 运行具有与当前不同工作目录的程序?

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

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

该文件位于目录 /a 内。

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

最佳答案

这样调用程序:

(cd /c; /a/helloworld)

括号会产生一个子shell。然后,这个子 shell 将其工作目录更改为 /c,然后从 /a 执行 helloworld。程序退出后,子 shell 终止,将您返回到父 shell 的提示符,在您开始的目录中。

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

(cd /c && /a/helloworld)

减少内存使用:为避免在 hello world 执行时让 subshel​​l 浪费内存,请通过 exec 调用 helloworld:

(cd /c && exec /a/helloworld)

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

https://stackoverflow.com/questions/786376/

相关文章:

linux - 如何使用 YUM 列出包的内容?

python - 如何在 Django 中按日期范围过滤查询对象?

python - 如何在 Python 中生成动态(参数化)单元测试?

python - 如何在给定的图上绘制垂直线

python - 在 Python 中使用多处理时我应该如何记录?

python - 配置以便 pip install 可以从 github 工作

linux - 在一行中执行组合多个 Linux 命令

linux - 如何在 Linux 上通过 FTP 递归下载文件夹

linux - 如何限制递归文件列表的深度?

linux - 如何在 Linux 上按名称而不是 PID 杀死进程?