쉘 프롬프트에 마지막 명령 반환 추가
0
이면 마지막 명령이 성공한 것입니다. 다른 숫자는 오류 코드입니다. ?
변수의 값을 출력하여 마지막 명령의 반환을 볼 수 있습니다.이것을 테스트하려면:
ls
echo $?
echo $?
임의의 명령을 입력할 때 두 번째로 오류가 발생해야 합니다.
chinmay@CC-T480:~/Desktop$ ls
file
chinmay@CC-T480:~/Desktop$ echo $?
0 <-- Success
chinmay@CC-T480:~/Desktop$ a
a: command not found
chinmay@CC-T480:~/Desktop$ echo $?
127 <-- Error code
프롬프트에서 이 값
$?
을 사용하여 마지막 명령이 통과했는지 실패했는지 확인합니다.또한 환경 변수
PROMPT_COMMAND
에 대해서도 알아야 합니다. Bash는 PROMPT_COMMAND
라는 환경 변수를 제공합니다. 이 변수의 내용은 Bash가 프롬프트를 표시하기 직전에 일반 Bash 명령으로 실행됩니다.bash 프롬프트에는 마지막 명령의 상태가 포함되어야 하므로
PROMPT_COMMAND
내부에 설정해야 합니다.먼저 프롬프트를 반환 코드로 업데이트하는 간단한 셸 함수를 작성합니다.
exit_code() {
# Save the exit status of last command. This
# needs to be done first otherwise exit status of
# other commands will be stored in this variable.
EXIT="$?"
# PS1 needs to be reset or else it will
# be appended every time to previous one.
PS1=""
# This will be final prompt, whatever set earlier will be
# overwritten by this.
export PS1="$EXIT \w $ "
}
그런 다음 이 함수를
PROMPT_COMMAND
# exit_code Should be first command in `PROMPT_COMMAND' to be executed or # else return status will always be 0/true as it will hold return status of
# previous command.
# First we check if prompt command is empty or not.
# If empty, just add `exit_code' to it. If non empty,
# make it `exit_code:$PROMPT_COMMAND'
[ -n "$PROMPT_COMMAND" ] && PROMPT_COMMAND="exit_code;$PROMPT_COMMAND" ||
PROMPT_COMMAND="exit_code"
위의 2개의 스니펫을
.bashrc
에 추가한 후 다음과 같은 결과를 얻습니다.chinmay@CC-T480:~$ exit_code() {
> EXIT="$?"
> PS1=""
> export PS1="$EXIT \w $ "
> }
chinmay@CC-T480:~$ PROMPT_COMMAND="exit_code"
0 ~ $ ls Desktop/
file
0 ~ $ ^C
130 ~ $ a
a: command not found
127 ~ $ echo $?
127
0 ~ $ echo $? # return of last echo command
0
0 ~ $
프롬프트의 첫 번째 숫자는 마지막 명령의 반환 상태입니다.
ls
의 경우 예상대로 실행된 0
가 표시됩니다. 내가 command a
를 실행했을 때 bash는 command not found
라는 오류를 던졌고 그 오류 코드는 127
이며 다음 줄에서 볼 수 있습니다. ctrl-c
를 누르면 130
와 같은 오류 코드를 볼 수 있습니다.체크아웃 .
Reference
이 문제에 관하여(쉘 프롬프트에 마지막 명령 반환 추가), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/chhajedji/add-return-of-last-command-to-your-shell-prompt-58mh텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)