运行命令时的工作目录

运行命令时的工作目录

我有一个可执行文件,我们把它称为 exec。它位于一个目录中,为了便于参数说明,我们称之为 dir。我们假设它位于文件系统根目录。我可以通过以下方式运行此可执行文件

cd /dir
./exec

如果我尝试从其他地方运行它,通过执行

/dir/exec

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

alias foo="cd /dir;./exec &"

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

这能做到吗?

答案1

是的,启动另一个 shell:

alias foo="sh -c 'cd /dir; ./exec &'"

或者使用子 shell:

alias foo="(cd /dir; ./exec &)"

答案2

您也可以这样做:假设要在任何地方执行的文件名为:executeme

  1. 如果它不是可执行文件,请输入以下命令使其可执行

chmod +x 执行

  1. 如果您在文件所在的目录中,请在 bin 目录中创建指向该文件的符号链接(您必须是 root 才能执行此操作)

sudo ln -s 执行/usr/bin/

  1. 如果一切正常,你现在可以通过输入文件名在任何位置执行文件

执行

相关内容