Это часть моего ~/.bashrc:Баш приглашение оболочки отображаться по-разному в консоли терминала и Tty
prompt(){
local EXIT="$?" # return code
PS1=""
local red="\[\033[0;31m\]" # text colour
local purple="\[\033[0;35m\]" # text colour
local normal="\[\033[0m\]" # text colour
if [ $EXIT == 0 ]; then # $EXIT colour based upon its value
local return="${normal}${?}"
else
local return="${red}${?}${normal}"
fi
PS1+="${normal}[${purple}\\D{%-l:%M%P}${normal}]${return} \\[\\e]0; \
\\[email protected]\\h: \\w\\a\\]${debian_chroot:+($debian_chroot)}\\[email protected]\\h:\\w\\$ "
}
export PROMPT_COMMAND=prompt
Это мое приглашение оболочки в гном-терминала (корректно отображается):
[5:01pm]0 [email protected]:~$
Но когда я переключаюсь на TTY консоли, после того, как я вошел в систему, отображается следующим образом:
[5:05pm]0 ;[email protected]: [email protected]:~$
Это происходит с регулярными но и с корнем на одном ноутбуке в той же операционной системе. Цвета всегда отображаются правильно, единственная проблема связана с отображением подсказки.
Sofware версии:
- GNU Баш, версия 4.3.11 (1) -release (i686-ПК-Linux-гну),
- Ubuntu Gnome 14,04.
Некоторые объяснения значения PS1:
[5:01pm] # current time
0 # return/exit code of the last command (0 can be any number;
# if return code has a non-zero value, it turns red)
PS - В настоящее время в TTY консолей, мне нужно source ~/.bashrc
, чтобы иметь возможность использоваться все мои настройки. (1) Где находится собственный .bashrc консоли tty? (2) Или как настроить его для использования ~/.bashrc
?
Решения различного поведения оперативного
Как подсказывает принятый ответ, в переменной PS1, была частью, которая должна быть опущена, таким образом, я только изменил последнюю строку функции
PS1+="${normal}[${purple}\\D{%-l:%M%P}${normal}]${return} \
${debian_chroot:+($debian_chroot)}\\[email protected]\\h:\\w\\$ "
Решение Постскриптум (PS)
tty консолей использует ~/.bashrc_profile
вместо ~/.bashrc
, потому что (как указано в комментарии в комментарии @chepner) последний из них получен эмулятором терминала GUI (обычно он запускает интерактивную оболочку без входа в систему). tty console - интерактивная оболочка.
Мое решение добавить следующее ~/.bash_profile
:
. ~/.bashrc
'.bashrc' специфичен для входа пользователя в систему, а не для типа терминала. – chepner
Так что я тоже подумал, но даже если я вхожу в систему с теми же учетными записями в модуле графического интерфейса (и, следовательно, в gnome-terminal), и на консоли tty, все еще в tty-консоли, если я хочу использовать '~/.bashrc ', сначала мне нужно ввести команду' source ~/.bashrc'. – tukusejssirs
Когда вы входите в консоль, программа 'login' запускает входную оболочку, в которой хранятся' .bash_profile', а не '.bashrc'. Эмулятор терминала GUI обычно запускает интерактивную оболочку, не входящую в систему, в которой источники '.bashrc', а не' .bash_profile', так как ваш графический интерфейс предположительно запускался из оболочки входа. Это довольно распространенная практика, заключающаяся в том, чтобы включать 'source ~/.bashrc' из вашего' .bash_profile', так что '.bashrc' отправляется для всех интерактивных оболочек, независимо от того, являются ли они оболочками входа. – chepner