터미널 사생활 보호 모드
어쩔 땐 터미널 기록에 저장되기 싫은 명령문을 실행해야 될 때가 있습니다. 예를 들어, GPG 키를 관리하는 명령어들은 기록에 저장되면 안 되겠죠. 만약 그렇다면 다음 스니펫이 도움이 될 수 있습니다.
만약 zsh
를 사용하신다면 다음 코드를 .zshrc
에다, 아니면 bash
를 쓰신다면 .bashrc
(또는 .bash_profile
)에다가 삽입하세요:
function incognito() {
unset HISTFILE
export PROMPT='[INCOGNITO] %n@%m %1~ %# '
}
사용하시는 터미널에 따라서 PROMPT
대신 PS1
을 설정하셔야 될 수도 있습니다. 여기에 표시한 PS1
프롬프트는 맥OS의 기본 설정값에서 빌려 왔습니다. 필요하시다면 OS 기본 설정값이나 취향에 맞게 수정하세요.
이제 incognito
를 입력하면, 현재 터미널 세션이 기록 파일에 저장되지 않습니다. 즐겁게 코딩하세요!
이 방식이 어떻게 작동하는지 궁금하시다면, 꽤 간단합니다. 터미널은 기록 파일을 사용하여 사용 기록을 저장하는데, 예로 .bash_history
나 .zsh_history
에 이전에 사용했던 명령문을 저장하여 history
명령이나 Ctrl-R 키(명령 기록 반전 탐색)로 검색하여 다시 불러올 수 있게 합니다. 이는 HISTFILE
이란 변수에 저장되는데, 이를 해제해주면 터미널이 이 기록 파일을 찾지 못하여 현재 세션이 저장되지 않습니다.
추가
만약 저처럼 Powerlevel10k(ZSH 테마)를 쓰신다면, export PROMPT
를 사용한 프롬프트 수정이 작동하질 않습니다. 다행히도, 테마가 엄청 좋아서 커스텀으로 세그멘트를 프롬프트바에 추가하게 해줍니다.
~/.p10k.zsh
끝에 다음을 추가합니다:
# Custom incognito segment
function prompt_is_incognito_mode() {
if (( ! ${+HISTFILE} )); then
p10k segment -f red -i '🥷'
fi
}
그 다음 POWERLEVEL9K_LEFT_PROMPT_ELEMENTS
를 정의하는 부분을 찾고, 맨 앞(이나 원하시는 곳 아무데나)에 is_incognito_mode
를 추가합니다:
# The list of segments shown on the left. Fill it with the most important segments.
typeset -g POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(
# Incognito mode indicator
is_incognito_mode
# =========================[ Line #1 ]=========================
# os_icon # os identifier
dir # current directory
vcs # git status
# =========================[ Line #2 ]=========================
newline # \n
prompt_char # prompt symbol
)
그리고, ~/.zshrc
안의 incognito
함수를 이렇게 수정할 수도 있습니다:
# Function for "incognito" mode
function incognito() {
unset HISTFILE
echo "Done! This terminal session will not be recorded into history."
}
이제 incognito
를 실행하면 귀여운 닌자 녀석이 왼쪽에 나타납니다:
> incognito
Done! This terminal session will not be recorded into history.
🥷 | ~
>