Как переключить оболочку входа на удаленный сервер на bash только на время сеанса? - PullRequest
0 голосов
/ 18 июня 2020

Оболочка входа по умолчанию - zsh, но моя настройка сильно зависит от функций и их экспорта. Я не хочу переносить каждую функцию в отдельный файл, как того требует zsh.

Я делаю следующее при подключении к удаленному серверу:

ssh user@host -t " \
somefunc() { somecommands; }; export -f somefunc; \
tmux (start new sessions...etc) "

Это хорошо работает, если оболочка по умолчанию bash, но если zsh функции не экспортируются.

есть ли способ переключить оболочку на bash на время удаленного сеанса на всех windows в tmux?

1 Ответ

1 голос
/ 21 июня 2020

Помимо проблем с кавычками в строке, вы должны иметь возможность запускать bash с самого начала и использовать его в качестве оболочки:

ssh user@host -t bash -c "' \
 somefunc() { somecommands; }; export -f somefunc; \
 SHELL=/bin/bash exec tmux (start new sessions...etc) '"

или поэкспериментируйте с bash -i или -il :

ssh user@host -t exec bash -c \''f(){ ...;};export -f f; SHELL=/bin/bash exec bash -i'\'
...