Назад | Перейти на главную страницу

Заменить путь к двоичному файлу для конкретного пользователя

Мой вопрос кажется банальным, но мне не удалось найти ничего полезного в Интернете. У меня есть двоичный файл в

/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 в домашнем каталоге пользователя.