Какой хороший способ для пользователя без полномочий root использовать исполняемый файл, которого нет в системном списке оболочек, как если бы он был настоящей оболочкой пользователя?
Я пытаюсь сделать это с двумя разными версиями Bash. Старая версия - это настоящая оболочка. Он отображается в chsh -l
, находится в обычном каталоге /bin/bash
, и система считает мою оболочку. Я хочу, чтобы более новая версия маскировалась под мою оболочку. У меня это скомпилировано в каталоге. Прямо сейчас у меня есть это в моем .bashrc
.
if [ $(echo $0) != $PATH_TO_NEW_SHELL_EXECUTABLE ]; then
export SHELL=$PATH_TO_NEW_SHELL_EXECUTABLE
exec "$SHELL" "$@"
fi
Проблема, с которой я столкнулся, заключается в том, что команды, запускаемые через ssh на этом компьютере, висят в строке exec
. rsync
и scp
также зависают. Например, будет зависать следующее.
ssh user@host false
Я не понимаю это поведение. В противном случае это работает. Я даже могу начать интерактивную сессию SSH просто отлично.
Как я могу решить эту конкретную проблему и в целом, как лучше всего симулировать правильно установленную оболочку?