Какой хороший способ для пользователя без полномочий 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 просто отлично.
Как я могу решить эту конкретную проблему и в целом, как лучше всего симулировать правильно установленную оболочку?
