На моем сервере Linux я вошел в систему как пользователь root для доступа к некоторым файлам: su root... После проверки файлов я снова вошел в систему под своим основным именем пользователя su. В окне моего терминала теперь отображается имя сервера ~: вместо имени пользователя @ сервер ~: слева от командной строки. Можно ли как-нибудь вернуть это в нормальное состояние?
6 ответов
Сделайте несколько команд exit
. Ваш su root
запустил подоболочку, где вы root, а ваш su user
запустил другую. Ввод exit
завершит эти субоболочки и вернет вас туда, откуда вы начали - на один уровень глубиной.
Вам просто нужно изменить подсказку. Вы можете использовать следующую команду:
export PS1="\u@\h \w: "
Я лично предпочитаю следующее в качестве подсказки, но это только я:
export PS1="[\u@\h \w]\$ "
Вы можете предотвратить изменение вашего приглашения, добавив оператор в соответствующие файлы bashrc. См. Также Bash Shell PS1: 10 примеров для того, чтобы сделать ваш Linux быстрым, как Анджелина Джоли, для получения дополнительной информации о PS1.
su
переключает пользователей, порождая новую (под) оболочку. Поэтому, когда вы вошли в систему, вы запустили оболочку. С первым su
для root вы запускаете подоболочку как root. Следующий su
для вашего пользователя запустил еще одну подоболочку - обратите внимание, что в данный момент у вас запущены три оболочки. Поэтому вместо того , чтобы su
-ный своего пользователя из rootshell, exit
-ный обратно в оболочку входа будет решать ваши проблемы.
Если у вас установлен pstree
, pstree -h
покажет вам графическое представление того, что происходит.
Похоже, что ваше приглашение обычно задается одним из файлов запуска вашей оболочки, который не запускается, когда вы запускаете su
от пользователя root. Если вы используете bash, man bash
в разделе INVOCATION может быть полезным. Есть несколько файлов запуска, которые может прочитать bash, включая, но не ограничиваясь:
/etc/profile
~/.bash_profile
~/.bash_login
~/.profile
~/.bashrc
Переменная среды PS1
является просто переменной среды и может устанавливаться или не устанавливаться в зависимости от того, какая комбинация вышеуказанных файлов запущена.
Команда su
имеет ключ -l
(или --login
), который может быть сокращен до просто -
что делает новую оболочку оболочкой входа в систему. Это, вероятно, то, что вы хотите:
su - david
Я всегда использую su
с этой опцией.
если это оболочка bash, попробуйте:
source ~/.bashrc
если это не работает, запустите echo $PS1
и посмотрите, что изменилось.
su
сам по себе не создает новый сеанс оболочки. Вот почему он не настраивает оболочку, как обычно. тем не мение,
su -
начнется новый сеанс входа