Вопрос или проблема
Извините, если это просто, я пытался искать и это начинает меня раздражать.
На одном из моих серверов (Debian) команда терминала настаивает на добавлении новой строки каждый раз. Так что это выглядит так:
name@servername ~/directory
%
Как избавиться от новой строки после имени директории, чтобы я вводил текст на той же строке, что и name@servername ~/directory
, а не под ней?
Я не могу найти файл .bashrc
, и это единственный сервер, который так делает. Из какого другого места это может контролироваться?
echo $SHELL
:
/bin/zsh
echo $PS1
:
%K{blue}%n@%m%k %B%F{cyan}%(4~|...|)%3~%F{white} %# %b%f%k
(наверное, это объясняет, почему .bashrc не существует)
Проверьте эти файлы, чтобы посмотреть, есть ли там какие-либо настройки:
/etc/bash.bashrc
/etc/profile
~/.profile
~/.bash_profile
~/.bash_login
Настройка PS1 с учетом настроек на уровне сайта
“export PS1=” для настройки приглашения оболочки
Где можно найти полное описание переменной $PS1?
И проверьте, установили ли вы пользовательский /etc/ssh/sshrc
Выполнить действие, когда пользователь входит через SSH с определенного хоста
И /etc/profile.d/
для пользовательского скрипта.
Изменить значение PS1 для всех пользователей Bash
Если ничего не будет найдено, расширьте поиск (некоторые из этих файлов могут не иметь значения, но это все файлы, которые могут быть прочитаны по умолчанию Bash, поэтому вы можете включить в поиск даже маловероятные виновники, такие как ~/.bash_aliases):
grep -H PS1 ~/.bashrc ~/.profile ~/.bash_profile ~/bash.login ~/.bash_aliases \ /etc/bash.bashrc /etc/profile /etc/profile.d/* /etc/environment 2>/dev/null
Как только вы идентифицируете файл, откройте его в текстовом редакторе и установите ваш PS1 на любое значение, которое вам нравится.
Как вернуть стандартное приглашение PS1?
Если вы используете zsh
, проверьте следующие файлы:
~/.zshrc
~/.zprofile
~/.zlogin
~/.zshenv
/etc/zshrc
/etc/zshenv
/etc/zprofile
Почему оболочка ZSH не изменяет приглашение?
Настроить приглашение zsh для обычного/суперпользователя?
Что должно/не должно быть в .zshenv, .zshrc, .zlogin, .zprofile, .zlogout?
Ответ или решение
Если ваша командная строка в Debian продолжает добавлять новую строку после отображения подсказки, вы, вероятно, столкнулись с проблемой конфигурации вашего командного интерпретатора. На вашем сервере используется Zsh, что необходимо учитывать при поиске решения. Давайте разберем, как это можно исправить.
Что такое PS1 в Zsh?
Первоначально стоит отметить, что переменная PS1
в Zsh отвечает за отображение командной строки. Это формат, в котором будут отображаться имя пользователя, имя хоста, текущая директория и другие элементы, такие как символы завершения строки. Если эта строка настроена неправильно, она может привести к добавлению лишних переносов строк.
Проверка конфигурационных файлов
Поскольку у вас нет файла .bashrc
, что вполне ожидаемо при использовании Zsh, вам стоит проверить следующие файлы, которые могут содержать настройки для Zsh:
-
Глобальные конфигурационные файлы:
/etc/zshrc
/etc/zshenv
/etc/zprofile
-
Пользовательские конфигурационные файлы:
~/.zshrc
~/.zprofile
~/.zlogin
~/.zshenv
Эти файлы могут содержать определенные настройки, которые вызывают добавление новой строки. Важно проверить их содержимое на наличие неправильно настроенной переменной PS1
.
Настройка PS1
Вы можете изменить PS1
, добавив в файл ~/.zshrc
следующую строку:
export PS1="%n@%m %F{cyan}%(?.%F{green}.%F{red})%f %c%f %# "
Этот пример настроит вашу подсказку на вывод имени пользователя и сервера, текущей директории и будет использовать цвета для обозначения статуса последней команды.
Устранение ненужных переносов строк
Если ваша текущая конфигурация ведет к ненужным переносам строк, убедитесь, что в вашей переменной PS1
нет символов, создающих перенос строки. Один неверный символ, например, \n
, может привести к тому, что подсказка будет добавлять новую строку. Проверяйте и редактируйте переменные, исключая символы, которые не соответствуют вашим требованиям.
Применение изменений
После внесения изменений в конфигурационный файл всегда полезно применить их:
source ~/.zshrc
Это обновит настройки текущей сессии, и изменения должны вступить в силу.
Заключение
Исправить проблему с добавлением новой строки в командной строке Zsh на вашем Debian сервере достаточно просто: необходимо правильно настроить переменные окружения в соответствующих конфигурационных файлах. Убедитесь, что ваша переменная PS1
корректна и не содержит ненужных символов, способствующих добавлению переноса строки. Если окажется, что ни один из указанных шагов не помог, возможно, стоит просмотреть другие скрипты и настройки, которые могут оказывать влияние на вашу командную строку, например, /etc/profile.d/
.
Если у вас есть другие вопросы по настройке Zsh или Debian, не стесняйтесь спрашивать!