Bash
如何自定義 $PROMPT_COMMAND 而不覆蓋預設值(如果存在)?
Mac 的終端帶有預設
PROMPT_COMMAND
檢查歷史記錄並更新目前工作目錄(選項卡標題):添加
echo $PROMPT_COMMAND
到您的頂部,.bash_profile
您將看到:shell_session_history_check; update_terminal_cwd
我想添加自己的
PROMPT_COMMAND
而不覆蓋預設值。預設值應該出現在我的自定義之前PROMPT_COMMAND
,用分號和空格分隔兩者。請注意,某些程序(例如 IntelliJ 和 VS Code)沒有預設值!所以我不想在這種情況下包含空格/分號。
# If PC contains anything, add semicolon and space if [ ! -z "$PROMPT_COMMAND" ]; then PROMPT_COMMAND="$PROMPT_COMMAND; " fi # Add custom PC PROMPT_COMMAND=$PROMPT_COMMAND'CUSTOM_PC_HERE'
我為此使用參數擴展:
:+
${*parameter*:+*word*}
如果*
parameter
為 null 或未設置,則不替換任何內容,否則替換擴展word
*。一個例子:
$ unset var $ var=${var:+"$var; "}XXX $ echo "$var" XXX $ var=abc $ var=${var:+"$var; "}XXX $ echo "$var" abc; XXX
所以為了保留現有的命令
;
,我使用PROMPT_COMMAND=${PROMPT_COMMAND:+"$PROMPT_COMMAND; "}'mycommand'
如果
PROMPT_COMMAND
之前為空,則它包含mycommand
之後,如果不是,;
則插入現有命令和mycommand
.