терминал не обновляется должным образом после изменения .bashr c и .bash_profile - PullRequest
0 голосов
/ 29 апреля 2020

Я просто пытаюсь обновить мой файл .bashr c и .bash_profile на моем новом компьютере ma c. Мои файлы выглядят так:

// .bash_r c

orange=$(tput setaf 166);
yellow=$(tput setaf 228);
green=$(tput setaf 71);
white=$(tput setaf 15);
bold=$(tput bold);
reset=$(tput sgr0);

PS1="\[${bold}\]\n";
PS1+="\[${orange}\]\u";  # username
PS1+="\[${white}\] at ";
PS1+="\[${yellow}\]\h";  # host
PS1+="\[${white}\] in ";
PS1+="\[${green}\]\W :";   # working directory
PS1+="\n";
PS1+="\[${white}\]\$ \[${reset}\]"; # '$' and reset color
export PS1;

// .bash_profile

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

Мой терминал выглядит так: enter image description here

Я не могу понять, что я ввел неправильно. Любая помощь приветствуется. Спасибо

1 Ответ

0 голосов
/ 29 апреля 2020

Во-первых, вы используете zsh, а не bash; подсказки настроены совершенно по-другому.

Во-вторых, вам не нужно экспортировать PS1, поскольку любой процесс, который заботится о его значении, будет использовать .zshrc.

Следующее должно работать, помещенное в .zshrc:

# The variables aren't necessary, but retained for
# ease of updating. You could specify %F{15} directly
# for %F{$white}, e.g.
orange=166
yellow=228
green=71
white=15

PS1=$'%B\n'
PS1+="%F{$orange}%n"
PS1+="%F{$white} at "
PS1+="%F{$yellow}%m";
PS1+="%F{$white} in "
PS1+="%F{$green}%~ :"
PS1+=$'\n'
PS1+="%F{$white}%# %f%b"

%B и %b включают и выключают жирный шрифт соответственно. %F{...} меняет текущий цвет переднего плана; %f сбрасывает настройки терминала по умолчанию. \ экранирование от bash заменяется на % экранирование. Вам нигде не нужен zsh эквивалент \[...\], потому что вы не используете необработанные последовательности байтов для управления форматированием.

Все это можно сократить до одной строки:

PS1=$'%B\n%F{166}%n%F{15} at %F{228}%m%F{15} in %F{71}%~ :\n%F{15}%# %f%b'

хотя более длинная версия более удобна в обслуживании.

Наконец, обратите внимание, что (в отличие от bash) zsh источников .zshrc для всех интерактивных оболочек. Если это также оболочка входа в систему, то она получает .zprofile, а не .zshrc.

.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...