cygwin用にインストールしたさまざまなシェル間でプロンプトを標準化するのにかなりの時間を費やしています。
インストールされたシェル:
- bash (デフォルトのログイン シェル)
- し
- csh (実際にはtcsh )
- ksh
- zsh
私のプロンプトは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プロンプトは意味不明です (bc から継承しているPS1の構文が気に入らないと思います)。
私が失敗したこと:
- PS1 の設定
/etc/profile
(からシェル名を読み取る case ステートメント内echo $0
) - PS1の設定
.kshrc
- PS1の設定
.shrc
- PS1の設定
.sh_profile
- PS1の設定
.profile
これらのシェルの 1 つを起動すると、cygwinは上記のファイルを実行しないようです。これらのシェルはbash内からのみ起動することに注意してください。
何か案は?(本で申し訳ありません、私は徹底的にしようとしています。)