Mac 터미널은 PROMPT_COMMAND
기본적으로 기록을 확인하고 현재 작업 디렉터리(탭 제목)를 업데이트합니다.
echo $PROMPT_COMMAND
상단에 추가하면 .bash_profile
다음이 표시됩니다.
shell_session_history_check; update_terminal_cwd
PROMPT_COMMAND
기본값을 재정의하지 않고 직접 추가하고 싶습니다 . 기본값은 사용자 정의 값 앞에 PROMPT_COMMAND
세미콜론과 공백으로 구분되어 표시되어야 합니다.
IntelliJ 및 VS Code와 같은 일부 프로그램에는 기본값이 없습니다. 따라서 이 경우에는 공백/세미콜론을 포함하고 싶지 않습니다.
답변1
Bash 5.1부터 PROMPT_COMMAND
배열이 될 수 있습니다. 실행될 첫 번째 명령으로 자신의 명령을 추가할 수 있습니다.
PROMPT_COMMAND=(mycommand "${PROMPT_COMMAND[@]}")
이는 기존 값이 PROMPT_COMMAND
단일 문자열에 여러 명령을 포함하는 경우에도 작동합니다.
일반적으로 사용되는 macOS bash와 같은 이전 Bash의 경우 다음을 사용할 수 있습니다.매개변수 확장이를 위해 :+
:
${parameter:+word}
만약에parameter
비어 있거나 설정되지 않은 경우, 아무것도 대체되지 않으며, 그렇지 않으면 확장됩니다.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
.
답변2
# 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'