覆盖特定用户的二进制路径

覆盖特定用户的二进制路径

我的问题似乎很简单,但我在互联网上找不到任何有用的信息。我有一个二进制文件

/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 中的路径语句/导出或在配置文件中就可以轻松完成。

相关内容