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

例如,我有一个二进制文件helloworld,它在current directory中创建了文件hello-world.txt.

目前,我在/b号目录中.我想启动运行../a/helloworld的程序,把hello-world.txt放在第三个目录/c的某个地方.

推荐答案

按如下方式调用该程序:

(cd /c; /a/helloworld)

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

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

(cd /c && /a/helloworld)

Reducing memory usage:为了避免hello world执行时子shell浪费内存,请通过exec调用helloworld:

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

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

Linux相关问答推荐

与mmap和munmap相比,保留一个巨大内存文件(约400 MB)的mmap多次的性能成本

一个bash脚本,用于基于2列映射文件替换多个文件名中的模式

变量在vim中打印良好,但在bashshell中打印不好,这怎么可能发生?

如何使 awk 输出更具可读性?

+后移动下一行到当前行

如何使用适用于 Linux 的 Dockerized SQL Server 设置 MSDTC

更改 awk 中的上一个重复行

如何在守护进程中使用 popen() 和 pclose() 获取通过管道执行的 shell 命令的正确退出代码?

ftell 在文件描述符上?

如何/在哪里可以找到要修复的 Linux 内核错误?

为什么 fork() 在 setsid() 之前

未找到框架.NETFramework,Version=v4.7.1的参考程序集

如何计算列的平均值

为什么在编译 K&R2 第 1 章中最长的行示例时出现getline 的类型冲突错误?

从 Linux shell 将多个文件从一个目录复制到另一个目录

未定义的引用 'shm_open',已在此处添加 -lrt 标志

如何以另一个用户的身份使用 sudo 在 bash 子shell 中执行一系列命令?

为什么`du`的输出通常与`du -b`如此不同

`是什么意思! -d` 在这个 Bash 命令中?

如何链接到 GCC 中特定版本的共享库