Якщо ви просто хочете надіслати PS1
змінну, і вона не містить '
(однієї лапки), спробуйте:
ssh targethost -t "PS1='$PS1'; exec bash"
Місцеві .bashrc
цілком можуть перезаписатись PS1
(дякую Деннісу Вільямсону за те, що вказав на це).
Існують способи передачі змінних середовища через ssh , але вони зазвичай відключені в налаштуваннях сервера. Якщо PermitUserEnvironment
директива ввімкнена в конфігурації сервера і у кожного користувача є своя пара ключів (так, можливо, вам не пощастить), ви можете додати environment="PS1=…"
до рядка ~/.ssh/authorized_keys
відповідно до вашого ключа.
Якщо ви хочете зберегти власну конфігурацію в спільному обліковому записі користувача, ви можете створити свій власний каталог файлів конфігурації та встановити HOME
змінну середовища для вказівки на цей каталог.
ssh targethost mkdir mrstatic.home
scp .bashrc targethost:mrstatic.home/
Створіть у mrstatic.home
каталозі символьні посилання, що вказують на відповідний запис у батьківському каталозі, коли ви хочете поділитися файлом з іншими користувачами.
Потім увійдіть за допомогою
ssh targethost -t 'HOME=~/mrstatic.home; exec bash'`
Якщо ви бажаєте змінити віддалений .profile
(або інший файл ініціалізації), ви, ймовірно, можете автоматизувати свої налаштування. Багато сайтів дозволяють LC_*
змінювати змінні середовища (зазвичай вони використовуються для налаштувань локалі). Якщо обидва ці умови виконані, ви можете встановити змінну, яка насправді не використовується для локалів, скажімо LC_USER
, на стороні клієнта, і протестувати її на сервері .profile
.
(Звичайно, загальні облікові записи - це погана ідея, але я розумію, що ви можете не в змозі змінити цю ситуацію.)
"PS1='$PS1' bash -i"
(а чому б і ніexec
, теж)?