使用Linux shell,如何启动与当前工作目录不同的工作目录的程序?
例如,我有一个二进制文件helloworld,它在当前目录中创建了文件hello-world.txt。 这个文件在目录/a中。
目前,我在目录/b。我想启动我的程序运行..然后在第三个目录/c中获取hello-world.txt。
使用Linux shell,如何启动与当前工作目录不同的工作目录的程序?
例如,我有一个二进制文件helloworld,它在当前目录中创建了文件hello-world.txt。 这个文件在目录/a中。
目前,我在目录/b。我想启动我的程序运行..然后在第三个目录/c中获取hello-world.txt。
当前回答
为什么不简单点呢
cd SOME_PATH &&运行some_command && cd -
最后一个“cd”命令将带您回到最后一个PWD目录。这应该适用于所有*nix系统。
其他回答
只要把最后一个“&&”改成“;”,不管命令执行成功还是失败,它都会返回cd:
cd SOME_PATH && run_some_command ; cd -
类似于David Schmitt的回答,加上Josh的建议,但没有让shell进程运行:
(cd /c && exec /a/helloworld)
这种方式更类似于您通常在shell上运行命令的方式。要查看实际的差异,必须在每个解决方案的另一个shell中运行ps ef。
为什么不简单点呢
cd SOME_PATH &&运行some_command && cd -
最后一个“cd”命令将带您回到最后一个PWD目录。这应该适用于所有*nix系统。
从当前目录提供到脚本目录执行命令的完整路径
/root/server/user/home/bin/script.sh
一个不需要子shell并且内置于bash的选项
(pushd SOME_PATH && run_stuff; popd)
演示:
$ pwd
/home/abhijit
$ pushd /tmp # directory changed
$ pwd
/tmp
$ popd
$ pwd
/home/abhijit