覆盖特定用户的二进制文件path

我的问题似乎是微不足道的,但我没有设法find任何有用的互联网。 我有一个二进制

/urs/bin/binary 

但是已经过时了,例如在一些安装上可以使用更新的版本

 /mount/new_version/binary 

有一个bash脚本以类似的forms调用这个二进制文件

 binary -doSomething 

我需要这个脚本来调用新版本的二进制文件,而不是旧的,但我没有权限改变这个脚本。 是以某种方式覆盖它的path,但只为我的用户? 任何帮助,将不胜感激。

如果二进制文件位于/usr/bin/binary ,并且脚本在不指定完整path的情况下调用二进制文件,而是依赖PATH /usr/bin ,则可以简单地将新二进制文件的位置添加到用户的PATH 。 把这样的东西放在他们的~/.bashrc

 PATH=/mount/new_version:$PATH 

出于安全原因,脚本通常指定二进制文件的完整path来防止这种情况。

如果您有权访问二进制文件,您可以将其备份并创build一个符号链接。

 mv /urs/bin/binary /urs/bin/binary.bkp ln -s /mount/new_version/binary /urs/bin/binary 

[编辑]

对不起,没有看到只能为一个用户完成更改。

你可以创build一个函数来调用,而不是二进制。

根据您执行二进制文件的方式(完整path或只是名称),您必须创build一个合适的函数 ,如:

 # Full path function /urs/bin/binary () { command /mount/new_version/binary "$@"; } export -f /urs/bin/binary # Name function binary () { command /mount/new_version/binary "$@"; } export -f binary 

如果二进制不接受/需要参数,删除“$ @”

要自动创build函数,请将.profile文件中的函数行放在用户主目录中。

alias commandname=/mount/new_version/binary

在.bashrc上面的path声明/导出或者在configuration文件中将会很容易完成。