У меня уйма времени стандартизирует мои подсказки для разных оболочек, которые я установил для cygwin.
Установленные оболочки:
- bash (оболочка входа по умолчанию)
- ш
- csh (на самом деле tcsh)
- кш
- зш
Моя подсказка стандартизирована для bash, csh и zsh, но я не могу получить sh и >ksh на борту.
Приглашение, которое я хочу использовать во всех оболочках, похоже на следующее:
20121216 15:18:04 [shell] # date and time in yellow, shell in red
user@hostname pwd # user@host in green, pwd in yellow
$ # white
Я настроил его так, как хочу для bash, со следующей строкой в /etc/profile
:
PS1="\[\e]0;\w\a\]\n\[\e[33m\]\D{%Y%m%d %H:%M:%S} \[\e[31m\][bash]\n\[\e[32m\]\u@\h \[\e[33m\]\w\[\e[0m\]\n\$ "
И я установил его для csh со следующей строкой в .tcshrc
:
set prompt="\n%{\033[33m%}%Y%W%D %P %{\033[31m%}[csh]\n%{\033[32m%}%n@%M %{\033[33m%}%~\n%{\033[0m%}$ "
И я установил его для zsh со следующими строками в .zshrc
:
PROMPT="
%{$fg[yellow]%}%D{%Y%m%d} %* %{$fg[red]%}[zsh]%{$reset_color%}
%{$fg[green]%}%n@%m %{$reset_color%}%{$fg[yellow]%}%~%{$reset_color%}
$ "
Но я нигде не могу установить приглашение по умолчанию для sh или ksh. Я могу открыть их оба и вручную установить PS1="$ "
, но я не могу заставить его установить автоматически. Подсказка sh выглядит идентично подсказке bash, а подсказка ksh является тарабарщиной (потому что ей не нравится синтаксис PS1, который она использует). наследуя от bash, я полагаю).
Вещи, которые я пробовал безуспешно:
- установка PS1 в
/etc/profile
(в операторе case чтение имени оболочки изecho $0
) - установка PS1 в
.kshrc
- установка PS1 в
.shrc
- установка PS1 в
.sh_profile
- установка PS1 в
.profile
Кажется, что cygwin просто не выполняет перечисленные выше файлы, когда я запускаю одну из этих оболочек. Обратите внимание, что я запускаю эти оболочки только из bash.
Любые идеи? (Извините за книгу, я просто пытаюсь быть тщательным.)
'sh'
больше нет. Раньше он относился к оригинальной оболочке Bourne, но в настоящее время связан с какой-либо другой оболочкой с минимальными функциями, такой какash
,bash
илиdash
. В нем нет нужных вам функций - вы можете попробовать установить PS1 из другой оболочки, но она не будет отслеживать ни время, ни рабочий каталог оболочки. - person Henk Langeveld   schedule 09.12.2012ksh
может отслеживать текущий каталог с помощьюPS1='$PWD $ '
-- используйте одинарные кавычки, чтобы отложить раскрытие$PWD
до тех пор, пока не будет оценен$PS1
. В исходной документации дляksh
есть хак для добавления даты и времени, но это все еще (умный) хак. Эскейп-последовательности bash здесь не помогут. - person Henk Langeveld   schedule 09.12.2012ksh
? - person nullrevolution   schedule 10.12.2012