Bash
用於 Bash + Korn 的 PS1
我正在嘗試為正在工作的 bash shell 設置提示,但是這個特定的系統也大量使用了 Korn。
echo ~/.profile -> export PS1="\[\033[38;5;10m\][\u@\h \W]\$ \[\]"
在 Bash 中:
[root@mysystem ~]$ (in green)
在科恩:
[033[38;5;10m][u@h W]$ [] (default color)
我需要為兩個外殼正確設置它。
從評論中聽起來你只是想檢查你是否正在執行
bash
,在這種情況下為 設置PS1
值bash
,否則將其設置為ksh
。這很簡單:
if [ -n "$BASH_VERSION" ]; then # set PS1 for bash else # set PS1 for ksh (or non-bash in general) fi
[ -n "$BASH_VERSION" ]``$BASH_VERSION
如果為非空則為真,如果目前 shell 為bash
.
Kusalananda 的回答很好,但以防萬一有人決定
export BASH_VERSION
在呼叫 ksh 之前(從而愚弄測試),您可以改為測試 的值$0
:case "$0" in (*ksh) PS1="ksh version" ;; (*bash) PS1="bash version" ;; (*) PS1="default version" ;; esac
這個測試不是萬無一失的;如果你
ln -s /bin/bash /tmp/bashksh
,然後呼叫/tmp/bashksh
,上面的程式碼將錯誤地表明你正在執行 ksh。