Терминал, подсказка изменена на “-Bash-4.2” и цвета потеряны

Вопрос или проблема

Обычно мой терминальный промпт был таким

username place$

сейчас он показывает только

bash-4.2$

и все настройки цвета были сброшены (в профиле терминала у меня такая же цветовая схема, но цвета просто не отображаются)

У меня нет никаких идей, что происходит (и я не знаю, как это искать).

Это изменилось ни с того, ни с сего, я работал с eclipse и maven, открыл новый терминал, и в новом терминале не было цветов.

Примечание: у меня нет файла ~/.bashrc, но у меня есть файл ~/.bash_profile.

Переменная промпта $PS1 вероятно не установлена, поэтому используется встроенное значение по умолчанию \s-\v\$.

Когда bash запускается интерактивно, он загружает файл конфигурации, обычно это ~/.bashrc или ~/.bash_profile, если они существуют, и именно так устанавливается более сложный промпт. Из man bash:

ВЫЗОВ

[…]
Когда bash вызывается как интерактивная оболочка входа или как
неинтерактивная оболочка с опцией –login,
сначала читаются и выполняются команды из файла /etc/profile, если этот файл существует. После
чтения этого файла он ищет ~/.bash_profile, ~/.bash_login, и
~/.profile, в указанном порядке […]

[…] Когда запускается интерактивная оболочка, которая не является оболочкой входа, bash читает и выполняет команды из
~/.bashrc, если этот файл существует.

Не установленный промпт может возникать в двух различных контекстах: оболочки входа и не оболочки входа. Если вы используете дисплейный менеджер для прямого входа в GUI, вы не столкнетесь с оболочками входа, если не переключитесь на виртуальную консоль (например, CtrlAlt + F1 до F6). Однако вы можете протестировать свой профиль входа bash в GUI, открыв новую оболочку входа явно: bash -l.

Проблема возникает с не оболочками входа

Если проблема возникает, например, с обычными терминалами GUI, тогда либо ваш ~/.bashrc отсутствует, либо его редактировали, исключив загрузку глобального файла, вероятно /etc/bashrc.

  • Если ~/.bashrc не существует, должен быть файл /etc/skel/.bashrc, который используется для его создания для новых пользователей. Просто скопируйте этот файл в свою домашнюю директорию, и ваш стандартный промпт должен вернуться для следующей новой оболочки, которую вы откроете.

  • Если ~/.bashrc существует, проверьте, есть ли где-то строка, которая загружает /etc/bashrc:

    . /etc/bashrc
      -ИЛИ-
    source /etc/bashrc
    

    Если нет, проверьте, существует ли этот файл (он должен существовать, по крайней мере, в большинстве дистрибутивов linux) и добавьте такую строку в ~/.bashrc.

Проблема возникает с оболочками входа

Если проблема возникает как с оболочками входа, так и с не оболочками входа, то проблема, вероятно, та же, что и выше. Если она возникает только с оболочками входа, у вас либо отсутствует один из файлов, упомянутых для оболочек входа в цитате INVOCATION выше, либо они не загружают ваш ~/.bashrc, что нормально для большинства дистрибутивов linux. Если ни один из этих файлов не существует, создайте ~/.bash_profile с таким содержанием:

if [ -f ~/.bashrc ]; then
  . ~/.bashrc
fi

Это позволяет вам, в большинстве случаев, сохранить вашу конфигурацию в одном файле (~/.bashrc).


Если, что бы вы ни делали, вы не можете вернуть промпт, вы можете создать его и вставить в ~/.bashrc следующим образом:

if [ "$PS1 ]; then
    PS1= .... # см. ниже
fi

Это потому, что $PS1 установлен и имеет значение по умолчанию для интерактивных оболочек, и вы не хотите устанавливать его иначе, так как другие вещи могут использовать это значение для определения, является ли это интерактивной средой.

Страница man bash содержит раздел PROMPTING, который описывает, как установить промпт с динамическими функциями, такими как ваше имя пользователя и текущий рабочий каталог, который будет, например:

PS1="\u \w:"

Есть руководство по использованию цветов здесь. Обратите внимание на то, что вы должны заключать непринтящиеся символы в \[ и \] (об этом есть обсуждение в конце ответа по цветам).

Просто вставьте это в ~/.bashrc и ~/.bash_profile от имени root для затронутого пользователя.

# Загружать глобальные определения
if [ -f /etc/bashrc ]; then
. /etc/bashrc
fi

Пришлось обновить bash в Cygwin по соображениям безопасности.

старый bash = 4.1.10(4)-release (i686-pc-cygwin) около 2009 года

$ echo $PS1

\[\e]0;\w\a\]\n\[\e[32m\]\u@\h \[\e[33m\]\w\[\e[0m\]\n\$

новый bash = 4.4.12(3)-release (i686-pc-cygwin) около 2016 года

Чтобы получить точно такой же вид и ощущения, пришлось добавить в .bashrc:

#

GREEN="\[$(tput setaf 2)\]"

YELLOW="\[$(tput setaf 3)\]"

RESET="\[$(tput sgr0)\]"

PS1="\n${GREEN}\u@\h ${YELLOW}\w${RESET}\n$ "

cd $HOME

#

примечание: включая cd $HOME

Я столкнулся с такой же проблемой, когда наш DBA пытался создать пользователя oracle для установки БД. Вместо того, чтобы изменять записи, он удалил некоторые файлы профиля, необходимые для пользователя.

Я разрешил эту проблему, скопировав следующие файлы по умолчанию от другого пользователя, который не сталкивался с этой проблемой:

  1. /home/username/.bashrc
  2. /home/username/.bashrc_profile
  3. /home/username/.bashrc_logout
  4. /home/username/.bashrc_history

Нет необходимости менять какие-либо настройки/текст в этих файлах.

Выйдите из сеанса и войдите обратно. У вас должен восстановиться стандартный шелл (обычно bash) с цветами и промптом входа.

чтобы исправить, выполните следующее (если у пользователя есть sudo, выполните с ним, если нет, войдите под одним из sudo)
cd /etc/skel/
скопируйте ниже
scp .bash_profile .bashrc в домашнюю директорию пользователя

Ответ или решение

Проблема с терминалом: пропажей цветной подсветки и изменением подсказки до "-Bash-4.2"

При работе в терминале вы заметили, что ваша стандартная подсказка изменилась с

username place$

на

bash-4.2$

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

Причины возникновения проблемы

  1. Отсутствие файла конфигурации:
    По умолчанию Bash выполняет файл конфигурации при запуске. Для интерактивных оболочек, не являющихся оболочками входа, загружается ~/.bashrc. Если этого файла нет, то используется предустановленная подсказка.

  2. Неверная настройка переменной PS1:
    Переменная PS1, отвечающая за настройку подсказки, могла быть не установлена или потеряла свои значения из-за отсутствия конфигурационного файла.

  3. Обновление окружения:
    Если вы обновили версию Bash, как резко произошло в вашем случае (например, с 4.1 до 4.4), это может привести к изменению поведения, как, например, отсутствие цветного оформления.

Решения проблемы

1. Проверка существования файла .bashrc

Проверьте, существует ли файл ~/.bashrc. Если его нет, вам нужно создать его, чтобы вернуть настройку подсказки и цветовую схему. Вы можете создать его следующим образом:

touch ~/.bashrc

2. Настройка файла .bashrc

Если файл ~/.bashrc существует, убедитесь, что он содержит необходимую конфигурацию. Откройте его в текстовом редакторе и добавьте следующее:

# Обнаружение наличия файла для глобальных настроек 
if [ -f /etc/bashrc ]; then
    . /etc/bashrc
fi

# Настройка цвета и подсказки
GREEN="\[$(tput setaf 2)\]"
YELLOW="\[$(tput setaf 3)\]"
RESET="\[$(tput sgr0)\]"
PS1="\n${GREEN}\u@\h ${YELLOW}\w${RESET}\n$ "

3. Обновление файла .bash_profile

Если вы используете ~/.bash_profile вместо ~/.bashrc, убедитесь, что он содержит команду для выполнения ~/.bashrc при запуске терминала:

if [ -f ~/.bashrc ]; then
    . ~/.bashrc
fi

Это обеспечит выполнение настроек из вашего .bashrc даже в интерактивных оболочках входа.

Заключение

После внесения изменений не забудьте перезапустить терминал или выполнить source ~/.bashrc для применения новых настроек. Если ни одно из этих решений не помогает, и проблема сохраняется, возможно, вам стоит создать временные файлы .bashrc, .bash_profile у других пользователей системы и скопировать их настройки.

Если у вас останутся дополнительные вопросы или потребуется дальнейшая помощь, не стесняйтесь обращаться к профессиональному сообществу или IT-экспертам.

Оцените материал
Добавить комментарий

Капча загружается...