3

Я хотел бы настроить мой сеанс PuTTY таким образом, чтобы я мог войти на удаленный хост и (a) запустить bash (b) изменить переменную PS1 (содержимое приглашения) (c) продолжить работу в сеансе в обычном режиме.

Я старался:

  1. Соединение -> Данные -> Переменные среды [не работает; сеанс выглядит так, как будто (б) не был выполнен] И
  2. Соединение -> SSH -> Удаленная команда: PS1 = "некоторые вещи" [окно с сеансом открывается на долю секунды, а затем закрывается]

Есть идеи? Я посмотрел некоторые похожие вопросы на форуме, но не нашел ничего полезного.

В более общем плане: я захожу на хост, где многие пользователи входят в систему как один пользователь, и, таким образом, все они разделяют «настройки» одного пользователя. Я ищу способ заставить PuTTY временно изменить некоторые из этих настроек (то есть, чтобы они были ограничены по времени сеансом, который я открываю с помощью PuTTY). Вроде как работает личная версия .bashrc внутри сессии. Надеюсь, это имеет смысл.

3 ответа3

2

Целевой сервер должен быть настроен для принятия установки переменных среды для работы первого варианта. Второй на самом деле работает нормально, проблема в том, что он предназначен для имитации

ssh user@foo command

который просто подключится, запустите command и выйдите. Вы можете оставить его открытым, дав ему command; bash но это не сработает для установки переменных, так как после установки переменной будет запущена новая оболочка.

Таким образом, если у вас нет корневого доступа к серверу, чтобы вы могли включить настройку переменных среды, единственный способ, которым я могу вам воспользоваться, - это отредактировать ~/.bashrc сервер и определить там свой PS1 . Добавьте эту строку в ~/.bashrc:

PS1="some stuff"

Теперь, каждый раз, когда вы входите на этот сервер, приглашение будет установлено для вас.


Другой способ сделать это - использовать другой rc-файл для вашей сессии bash. Создайте новый файл с этими строками:

source /etc/profile
source ~/.bashrc
PS1='some stuff'

Сохраните его как, например, ~/.myps1 , затем в настройках замазки установите команду для запуска на удаленном сервере:

bash --rcfile ~/.myps1

Это откроет новый сеанс оболочки на удаленном сервере и прочитает файл выше, который сначала читает .bashrc а затем устанавливает PS1 .

0

Для тех, кто не может изменить конфигурацию sshd по разным причинам и / или имеет +2000 серверов (и не имеет доступа к инструментам массовой настройки, или не может / не хочет менять настройки для других пользователей), вот решение, которое я придумала с:

В PuTTY загрузите нужный сеанс, перейдите в Connection> SSH. В разделе "Данные для отправки на сервер" в поле "Удаленная команда" используйте:

env [OPTION]... [-] [NAME=VALUE]... [COMMAND [ARG]...] bash

Пример:

env -u PS1 PS1="[\u@\h]\\$ " bash

Сначала я удалил переменную, потому что иначе она не работала.

0

Попробуйте установить для удаленной команды что-то вроде export PS1='foo'; /usr/bin/bash ... который должен порождать сеанс bash после установки PS1.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .