Я использую конкретный запрос PS1, который мне нравится. Я разделяю несколько логинов с другими людьми на нескольких разных серверах. Мне было интересно, есть ли способ указать в моем локальном профиле bash удаленное приглашение или любой другой способ, кроме копирования и вставки каждый раз, когда я удаляю.
Нажатие моей подсказки PS1 по ssh

8 ответов
Загрузить файл на каждом удаленном компьютере, скажем ~/.my_custom_bashrc, С вашим custom bash настройки (в данном случае PS1=...), а затем запустить ssh С:
ssh user@host -t "bash --rcfile ~/.my_custom_bashrc -i"
вы можете легко использовать bash функции как обертка для удобочитаемости.

если вы просто хотите, чтобы отправить 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_* переменные окружения through (обычно они используются для настройки локали). Если выполняются оба этих условия, можно задать переменную, которая фактически не используется для локалей, скажем LC_USER, на клиенте сторона, и проверить его на сервере .profile.
(конечно, общие учетные записи-плохая идея, но я понимаю, что вы не можете изменить эту ситуацию.)

вставьте приглашение PS1 в~/.ssh / environment и SSH сессия будет нести его на каждый хост вы войти. Это работает для меня с openssh 4.3p2 .

ssh -t user@host "remote='$PS1' bash -i"
затем, в командной строке:
PS1=$remote

вы можете указать переменные окружения на стороне клиента и если ssh-сервер это позволяет (проверьте man sshd-config), эти переменные копируются в сеанс при входе в машину.
Итак, вам придется настроить .bashrc на сервере, чтобы проверить существующий PS1 (или любой другой переменной) и только установить PS1, если он еще не установлен.
или, что делает вещи проще, вы связываете свои настройки в функцию .. и развернуть эту функцию либо как особый файл ваш источник по требованию (source joes_bashrc) или непосредственно .bashrc. наличие собственного файла кажется немного более надежным. другие люди могут использовать ваши настройки, но не обязаны это делать.

не делиться логинами. SSH как сами, то делайте sudo -su shareduser (-s означает "раковина").
Make sudo сохраните свой домашний каталог:
Defaults env_keep += "HOME"

Если вы хотите сделать это без необходимости дополнительного 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, но с вашими переопределениями.

вы можете делать такие вещи, как монтаж вашего дома через sshfs/nfs, но самое простое решение-это scp вашего bashrc на новую машину. Это также приносит псевдонимы и прочее.

Komp




















