Если вы просто хотите отправить 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
тоже)?PS1
чтобы быть перезаписанным во время запуска оболочки. Нет exec: во время тестирования в моей системе это, казалось, не имело никакого значения - никакого дополнительного процесса..bashrc
житель, скорее всего, перезапишетPS1
.Поместите приглашение PS1 в ~ / .ssh / environment, и сессия ssh перенесет его на каждый хост, к которому вы подключаетесь. У меня работает с openssh 4.3p2.
источник
PermitUserEnvironment
, которая по умолчанию отключена.Вы можете указать переменные окружения на стороне клиента, и если ssh-сервер позволяет это (см. man sshd-config), эти переменные копируются в сеанс при входе в систему на компьютере.
поэтому вам нужно настроить .bashrc на сервере для проверки существующего PS1 (или любой другой переменной) и устанавливать PS1, только если он еще не установлен.
или, что упрощает задачу, вы связываете свои настройки в функцию ... и развертываете эту функцию либо в виде специального файла, который ваш источник по запросу (
source joes_bashrc
), либо непосредственно в .bashrc. Наличие вашего собственного файла кажется немного более надежным. другие люди могут использовать ваши настройки, но не обязаны это делать.источник
Не делитесь логинами. SSH как себя, то и делай
sudo -su shareduser
(-s
значит "оболочка").Держите
sudo
ваш домашний каталог:источник
Если вы хотите сделать это без необходимости дополнительного scp, вы можете сделать что-то вроде этого:
ssh -t srvname ' cp ~/.bashrc ~/.bashrc.n &>/dev/null ; echo "LS_COLORS=\"no=00:fi=00:ETC:ETC:ETC\";" >> ~/.bashrc.n ; echo "export LS_COLORS" >> ~/.bashrc.n ; echo "alias ls=\"ls --color=auto\";" >> ~/.bashrc.n ; exec bash --rcfile ~/.bashrc.n'
Это сгенерирует .bashrc.n, который основан на серверах bashrc, но с вашими переопределениями.
источник
Если вы готовы вторгнуться незаметно от ваших коллег, и вы можете доверять им , чтобы не мешать вашему выбору, то я предлагаю сочетание ответа Сайруса , ответ Акиры и ответ Деннис Уильямсона .
~/.bashrc
и добавьте в конце. Хотя ваши коллеги «не хотели бы, чтобы вы писали поверх базового профиля», они не узнают об этом, если не будут искать его.Я считаю, что это довольно ясно, но:
ssh
команда заставляетUnf
переменную быть установленной на удаленном сервере, когда вы входите в нее. Это вызовет ваш код на пульте дистанционного управления.bashrc
, что приведет к вашим изменениям. Поскольку вы ставите свой код в конце.bashrc
, он переопределит общие настройки ранее в файле.Раскрытие: я не проверял это.
источник
Самый простой способ это ИМХО:
источник
PROMPT_COMMAND
(которая выполняется каждый раз, когда оболочка выдает приглашение), кажется очень сложным способом решения этой проблемы. И, поскольку это несколько загадочно, любой ответ, который предполагает, что это действительно должно иметь объяснение того, как это работает.Вы можете сделать что-то, например, смонтировать ваш дом через sshfs / nfs, но самое простое решение - это перенести ваш bashrc на новую машину. Это также приносит псевдонимы и прочее.
источник