在cygwin中跨shell标准化提示
我在为cygwin安装的不同shell之间标准化我的提示,这是一段相当长的时间 已安装的外壳:在cygwin中跨shell标准化提示,cygwin,sh,ksh,prompt,.profile,Cygwin,Sh,Ksh,Prompt,.profile,我在为cygwin安装的不同shell之间标准化我的提示,这是一段相当长的时间 已安装的外壳: bash(默认登录shell) sh csh(tcsh,实际上) ksh zsh 我的提示在bash、csh和zsh中是标准化的,但我无法在船上获得sh和ksh 我希望在所有shell中使用的提示类似于以下内容: 20121216 15:18:04 [shell] # date and time in yellow, shell in red user@hostname pwd
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%}$ "
PROMPT="
%{$fg[yellow]%}%D{%Y%m%d} %* %{$fg[red]%}[zsh]%{$reset_color%}
%{$fg[green]%}%n@%m %{$reset_color%}%{$fg[yellow]%}%~%{$reset_color%}
$ "
我已将其设置为zsh,并在.zshrc
中显示以下行:
set prompt="\n%{\033[33m%}%Y%W%D %P %{\033[31m%}[csh]\n%{\033[32m%}%n@%M %{\033[33m%}%~\n%{\033[0m%}$ "
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提示符是乱七八糟的(我认为它不喜欢从bash继承的PS1语法)
我尝试过但未成功的事情:
- 在
中设置PS1(在读取shell的case语句中 来自/etc/profile
echo$0的名称
- 在
.kshrc
- 在
.shrc
- 在
.sh_配置文件中设置PS1
- 在
.profile
ksh
不充当登录shell,它将尝试读取$ENV
引用的文件,如果未设置ENV
,则尝试读取$HOME/.kshrc
较旧的版本(特别是sun的ksh88)遇到了鸡和蛋的情况,因为您只能在~/.profile
中设置ENV
,但之后您仍然必须自己使用来获取文件源$环境
请注意,必须导出
ENV
和PS1
,才能被登录后生成的ksh实例拾取(例如,从screen
或tmux
)。不再有'sh'
这样的东西了。它过去指的是原始的Bourne Shell,但现在链接到其他一些最小功能Shell,如ash
、bash
、或dash
。它没有您需要的功能-您可以尝试从另一个shell设置PS1,但它不会跟踪时间,也不会跟踪shell的工作目录。ksh
可以使用PS1='$PWD$'
跟踪当前目录--使用单引号推迟扩展$PWD
,直到$PS1
得到评估。ksh
的原始文档有一个添加日期和时间的技巧,但它仍然是一个(聪明的)技巧。bash escape序列在这里帮不上忙。谢谢你的信息,Henk。但我想我真正想问的是,在ksh
?+1中,我应该在哪里设置默认提示,并接受a)对$ENV
的引用,以及b)您先前评论中关于sh
的信息。这使得我将export ENV=$HOME/.kshrc
添加到我的/etc/profile
,然后将export PS1=blahblahblah
添加到~/.kshrc,这最终为未登录korn shell设置了默认提示。谢谢