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

8

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

/urs/bin/binary

но он устарел и более новая версия доступна, например, на некоторых монтировках

/mount/new_version/binary

Есть сценарий bash, который вызывает этот двоичный файл в такой форме

binary -doSomething

Мне нужен этот скрипт для вызова новой версии бинарного файла вместо старой, но мне не разрешено изменять этот скрипт. Это способ как-то переопределить путь к нему, но только для моего пользователя? Любая помощь будет оценена.

Виктор Столбин
источник
Если вам не разрешено это делать, обратитесь к администратору.
Свен

Ответы:

11

Если двоичный файл включен, /usr/bin/binaryи сценарий вызывает двоичный файл без указания полного пути, а вместо этого полагается на то, /usr/binчто он находится внутри, PATHтогда вы можете просто добавить местоположение нового двоичного файла в начало пользователя PATH. Поместите что-то вроде этого в их ~/.bashrc:

PATH=/mount/new_version:$PATH

Из соображений безопасности сценарии часто указывают полный путь к двоичным файлам, чтобы предотвратить подобные вещи.

Приостановлено до дальнейшего уведомления.
источник
3

Если у вас есть доступ к двоичному файлу, вы можете сделать его резервную копию и создать символическую ссылку.

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 выше инструкция пути / экспорта или в профиле будет достаточно легко.

art3mis
источник