1. 程式人生 > >Linux/Unix中的命令提示符prompt

Linux/Unix中的命令提示符prompt

用慣了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='%~ '        # %~ 表示當前路徑
<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>