JBa*_*lin 5 shell bash bashrc rc
Mac 的终端带有默认PROMPT_COMMAND检查历史记录并更新当前工作目录(选项卡的标题):
添加echo $PROMPT_COMMAND到您的顶部,您.bash_profile将看到:
shell_session_history_check; update_terminal_cwd
Run Code Online (Sandbox Code Playgroud)
我想添加我自己的PROMPT_COMMAND而不覆盖默认值。默认值应该在我的自定义之前PROMPT_COMMAND,用分号和空格将两者分开。
请注意,某些程序(例如 IntelliJ 和 VS Code)没有默认值!所以我不想在这种情况下包含空格/分号。
我使用的参数扩展与:+此:
${parameter:+word}
如果parameter为 null 或未设置,则不替换任何内容,否则替换 的扩展word。
一个例子:
$ unset var
$ var=${var:+"$var; "}XXX
$ echo "$var"
XXX
$ var=abc
$ var=${var:+"$var; "}XXX
$ echo "$var"
abc; XXX
Run Code Online (Sandbox Code Playgroud)
所以为了保持现有的命令; 附加,我使用
PROMPT_COMMAND=${PROMPT_COMMAND:+"$PROMPT_COMMAND; "}'mycommand'
Run Code Online (Sandbox Code Playgroud)
如果PROMPT_COMMAND之前为空,则它包含在mycommand之后,如果不是,; 则插入现有命令和mycommand.
# 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'
Run Code Online (Sandbox Code Playgroud)