Я использую конкретный запрос 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 на новую машину. Это также приносит псевдонимы и прочее.
Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]