我有一个可执行文件,我们把它称为 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
- 如果它不是可执行文件,请输入以下命令使其可执行
chmod +x 执行
- 如果您在文件所在的目录中,请在 bin 目录中创建指向该文件的符号链接(您必须是 root 才能执行此操作)
sudo ln -s 执行/usr/bin/
- 如果一切正常,你现在可以通过输入文件名在任何位置执行文件
执行