运行命令时的工作目录

Tim*_*imD 4 command-line alias

我有一个可执行文件,我们称之为 exec。为了称为 dir 的参数,它存在于一个目录中。假设它位于文件系统根目录。我可以通过做来运行这个可执行文件

cd /dir
./exec
Run Code Online (Sandbox Code Playgroud)

如果我尝试从其他任何地方运行它,

/dir/exec
Run Code Online (Sandbox Code Playgroud)

它无法运行。从它发出的错误消息来看,它似乎试图在运行命令的目录中查找支持文件,而不是在它自己的目录中。到目前为止还不是一个大问题。但是,我想为命令添加别名,以便我可以从任何地方调用它。我可以写一个别名如下:

alias foo="cd /dir;./exec &"
Run Code Online (Sandbox Code Playgroud)

但这使我的终端留在 中/dir,这是我不想要的。我也不想改回某个任意目录,我想留在原来的位置。

这能做到吗?

Den*_*ker 7

是的,启动另一个 shell:

alias foo="sh -c 'cd /dir; ./exec &'"
Run Code Online (Sandbox Code Playgroud)

或者使用子shell:

alias foo="(cd /dir; ./exec &)"
Run Code Online (Sandbox Code Playgroud)