Мой вопрос кажется банальным, но мне не удалось найти ничего полезного в Интернете. У меня есть двоичный файл в
/urs/bin/binary
но он устарел и более новая версия доступна на каком-то креплении, например
/mount/new_version/binary
Есть сценарий bash, который вызывает этот двоичный файл в такой форме, как
binary -doSomething
Мне нужен этот сценарий для вызова новой версии двоичного файла вместо старой, но я не имею права изменять этот сценарий. Есть ли способ каким-то образом изменить путь к нему, но только для моего пользователя? Любая помощь будет оценена.
Если двоичный файл находится в /usr/bin/binary
и сценарий вызывает двоичный файл без указания полного пути, но вместо этого полагается на /usr/bin
находясь в PATH
тогда вы можете просто добавить расположение нового двоичного файла в начало пользовательского PATH
. Поместите что-нибудь подобное в их ~/.bashrc
:
PATH=/mount/new_version:$PATH
По соображениям безопасности в сценариях часто указывается полный путь к двоичным файлам, чтобы предотвратить подобные вещи.
alias commandname=/mount/new_version/binary
в .bashrc над оператором пути / экспортом или в профиле будет достаточно просто.
Если у вас есть доступ к двоичному файлу, вы можете сделать резервную копию и создать символическую ссылку.
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 в домашнем каталоге пользователя.