Я знаю, что ответов двадцать тысяч, но ни один из них не сработал так, как ожидалось. Я удивлен больше, чем вы, поэтому, пожалуйста, сначала прочитайте рассказ.
Я пытаюсь добиться того, что кажется базовым: отправлять локальную переменную PS1
в Ubuntu 14.04.1, когда я вхожу в нее по SSH с Mac. Я знаю, что есть два способа сделать это:
- Используя директиву SendEnv внутри /etc /ssh_config,
- Используя команду с SSH, что-то вроде
ssh host -t "PS1='"$PS1"'; exec bash"
.
Оба маршрута прилично хорошо описаны в других ответах SE, и в Google есть множество результатов. Но никто не работает для меня, как ожидалось.
Первый вариант не работает, я установил AcceptEnv PS1
и PermitUserEnvironment yes
в /etc /ssh /sshd_config в Ubuntu. Если я пытаюсь передать любую другую переменную, она работает как ожидалось. Я изучил ~/.bashrc
и ~/.profile
и, похоже, у него много заданий для PS1
. Это там переопределено, и если да, как предотвратить это?
Второй вариант тоже не работает, но опять же, он работает с любым другим именем переменной. Если я сделаю export ABC=123; exec bash
при входе в SSH, я вижу ABC
в определенных переменных, если я делаю то же самое с PS1
, по умолчанию всегда используется \[\e]0;\u@\h: \w\a\]${debian_chroot:+($debian_chroot)}\u@\h:\w\$
. Другая проблема, связанная со вторым решением, заключается в том, что некоторые переменные окружения не загружаются, когда я запускаю exec bash
, я пытался с --login
и --interactive
, пытался найти исходный код . ~/.profile
и . ~/.bashrc
, но я не получаю тот же вывод при входе в систему (баннер Ubuntu и статистика), когда я вхожу в систему, а переменные остаются неопределенными (так что псевдонимы и другие полезные вещи я предполагаю?).
Я хочу знать, как установить мои стили приглашений, определенные в локальном PS1
на недавнюю Ubuntu по SSH-соединению. Изменение связанной с PS1 конфигурации в Ubuntu НЕ является вариантом, я явно хочу передать конфигурацию из моего клиента, поэтому я не делаю то же самое двадцать раз.