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