Bash

用於 Bash + Korn 的 PS1

  • March 9, 2019

我正在嘗試為正在工作的 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,在這種情況下為 設置PS1bash,否則將其設置為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。

引用自:https://unix.stackexchange.com/questions/371341