3

На моем сервере Linux я вошел в систему как пользователь root для доступа к некоторым файлам: su root... После проверки файлов я снова вошел в систему под своим основным именем пользователя su. В окне моего терминала теперь отображается имя сервера ~: вместо имени пользователя @ сервер ~: слева от командной строки. Можно ли как-нибудь вернуть это в нормальное состояние?

6 ответов6

12

Сделайте несколько команд exit . Ваш su root запустил подоболочку, где вы root, а ваш su user запустил другую. Ввод exit завершит эти субоболочки и вернет вас туда, откуда вы начали - на один уровень глубиной.

6

Вам просто нужно изменить подсказку. Вы можете использовать следующую команду:

export PS1="\u@\h \w: "

Я лично предпочитаю следующее в качестве подсказки, но это только я:

export PS1="[\u@\h \w]\$ "

Вы можете предотвратить изменение вашего приглашения, добавив оператор в соответствующие файлы bashrc. См. Также Bash Shell PS1: 10 примеров для того, чтобы сделать ваш Linux быстрым, как Анджелина Джоли, для получения дополнительной информации о PS1.

5

su переключает пользователей, порождая новую (под) оболочку. Поэтому, когда вы вошли в систему, вы запустили оболочку. С первым su для root вы запускаете подоболочку как root. Следующий su для вашего пользователя запустил еще одну подоболочку - обратите внимание, что в данный момент у вас запущены три оболочки. Поэтому вместо того , чтобы su -ный своего пользователя из rootshell, exit -ный обратно в оболочку входа будет решать ваши проблемы.

Если у вас установлен pstree , pstree -h покажет вам графическое представление того, что происходит.

4

Похоже, что ваше приглашение обычно задается одним из файлов запуска вашей оболочки, который не запускается, когда вы запускаете su от пользователя root. Если вы используете bash, man bash в разделе INVOCATION может быть полезным. Есть несколько файлов запуска, которые может прочитать bash, включая, но не ограничиваясь:

  • /etc/profile
  • ~/.bash_profile
  • ~/.bash_login
  • ~/.profile
  • ~/.bashrc

Переменная среды PS1 является просто переменной среды и может устанавливаться или не устанавливаться в зависимости от того, какая комбинация вышеуказанных файлов запущена.

Команда su имеет ключ -l (или --login), который может быть сокращен до просто - что делает новую оболочку оболочкой входа в систему. Это, вероятно, то, что вы хотите:

su - david

Я всегда использую su с этой опцией.

1

если это оболочка bash, попробуйте:

source ~/.bashrc

если это не работает, запустите echo $PS1 и посмотрите, что изменилось.

1

su сам по себе не создает новый сеанс оболочки. Вот почему он не настраивает оболочку, как обычно. тем не мение,

su -

начнется новый сеанс входа

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