我的问题似乎很简单,但我在互联网上找不到任何有用的信息。我有一个二进制文件
/urs/bin/binary
但它已经过时了,有些支架上有新版本
/mount/new_version/binary
有一个 Bash 脚本可以以如下形式调用此二进制文件
binary -doSomething
我需要此脚本来调用二进制文件的新版本而不是旧版本,但我无权更改此脚本。是否有办法以某种方式覆盖其路径,但仅限于我的用户?任何帮助都将不胜感激。
答案1
如果二进制文件在/usr/bin/binary
,并且脚本调用二进制文件时没有指定完整路径,而是依赖于/usr/bin
在,PATH
那么您只需将新二进制文件的位置添加到用户的开头即可PATH
。在他们的 中添加类似这样的内容~/.bashrc
:
PATH=/mount/new_version:$PATH
出于安全原因,脚本通常会指定二进制文件的完整路径以防止此类事情发生。
答案2
如果您有权访问二进制文件,您可以备份它并创建符号链接。
mv /urs/bin/binary /urs/bin/binary.bkp
ln -s /mount/new_version/binary /urs/bin/binary
[编辑]
抱歉,没有看到只需针对一个用户进行的更改。
您可以创建一个要调用的函数来代替二进制文件。
根据您执行二进制文件的方式(完整路径或仅名称),您必须创建一个适合的功能, 喜欢:
# 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
如果二进制文件不接受/不需要参数,请删除“$@”。
为了自动化函数创建,请将函数行放在用户主目录中的 .profile 文件中。
答案3
alias commandname=/mount/new_version/binary
在 .bashrc 中的路径语句/导出或在配置文件中就可以轻松完成。