用慣了DOS的夥計剛用Unix時最想乾的事情就是想把Unix搞得像DOS一些,
其中的一條就是把Unix的提示符設定成$p$g那樣的。下面就說一說做的方法。
不同的SHELL設定的方法不同,比較方便的是GNU bash(Bourne Again Shell)
和ksh(Korn Shell)以及tcsh(csh的增強版,Linux中的csh就是到tcsh的一個
符號串連)。普通的sh(Bourne Shell)和csh設定比較羅嗦。下面就一個一個的
說各種Shell的設定方法:
ksh:
由於ksh把提示符變數PS1作為一個特殊的變數看待,cd的時候ksh會自動更
新PS1的值所以只要簡單的把當前路徑對應的環境變數$PWD加到PS1裡就行了:
PS1='$PWD $ '
sh:
由於Bourne Shell只把PS1作為一個普通的變數,而且不支援別名,因此無
法完美地實現DOS中相同的功能,解決的方法是重新定義一個命令(比如xcd)
將其實現為一個函數:
xcd() { cd $* ; PS1="`pwd` $ "; }
然後每次用xcd切換目錄。
csh:
csh雖然不對提示符變數$prompt作特殊處理,但它支援別名,可以修改一下
cd的語義,使其自動修改提示符:
alias setprompt 'set prompt="${cwd}% "'
setprompt# to set the initial prompt
alias cd 'chdir \!* && setprompt'
bash:
bash提供了一些特殊的變數來支援提示符的設定,\w表示當前路徑,並把
等同於$HOME的部分替換成~,以縮短提示符的長度。
PS1='\w $ '
Linux中是把hostname也加上了:
PS1='\h:\w $ ' # \h 表示hostname
為了更象DOS,可以把不同的命令分得更清楚,我通常加上一個分行符號:
PS1='
\h:\w $ '
tcsh:
tcsh的做法類似於bash,只不過變數的名字不同:
set prompt='%~ ' # %~ 表示當前路徑
Sample:
Solaris中的不同做法:如何在命令列顯示目錄?
用慣了DOS的夥計剛用Unix時最想乾的事情就是想把Unix搞得像DOS一些,
其中的一條就是把Unix的提示符設定成$p$g那樣的。下面就說一說做的方法。
不同的SHELL設定的方法不同,比較方便的是GNU bash(Bourne Again Shell)
和ksh(Korn Shell)以及tcsh(csh的增強版,Linux中的csh就是到tcsh的一個
符號串連)。普通的sh(Bourne Shell)和csh設定比較羅嗦。下面就一個一個的
說各種Shell的設定方法:
ksh:
由於ksh把提示符變數PS1作為一個特殊的變數看待,cd的時候ksh會自動更
新PS1的值所以只要簡單的把當前路徑對應的環境變數$PWD加到PS1裡就行了:
PS1='$PWD $ '
sh:
由於Bourne Shell只把PS1作為一個普通的變數,而且不支援別名,因此無
法完美地實現DOS中相同的功能,解決的方法是重新定義一個命令(比如xcd)
將其實現為一個函數:
xcd() { cd $* ; PS1="`pwd` $ "; }
然後每次用xcd切換目錄。
csh:
csh雖然不對提示符變數$prompt作特殊處理,但它支援別名,可以修改一下
cd的語義,使其自動修改提示符:
alias setprompt 'set prompt="${cwd}% "'
setprompt# to set the initial prompt
alias cd 'chdir \!* && setprompt'
bash:
bash提供了一些特殊的變數來支援提示符的設定,\w表示當前路徑,並把
等同於$HOME的部分替換成~,以縮短提示符的長度。
PS1='\w $ '
Linux中是把hostname也加上了:
PS1='\h:\w $ ' # \h 表示hostname
為了更象DOS,可以把不同的命令分得更清楚,我通常加上一個分行符號:
PS1='
\h:\w $ '
tcsh:
tcsh的做法類似於bash,只不過變數的名字不同:
set prompt='%~ ' # %~ 表示當前路徑