이 명령을 zsh에 작성합니다
pwd ; ls ; cd /etc ; pwd ; cd ; pwd ; ls ; echo $BASH_SUBSHELL}
/root
Desktop Downloads Music Public Templates
Documents for_play Pictures pycharm Videos
/etc
/root
Desktop Downloads Music Public Templates
Documents for_play Pictures pycharm Videos
나는 그것을 bash로 썼다.
pwd ; ls ; cd /etc ; pwd ; cd ; pwd ; ls ; echo $BASH_SUBSHELL
/root
Desktop Documents Downloads for_play Music
Pictures Public pycharm Templates Videos
/etc
/root
Desktop Documents Downloads for_play Music
Pictures Public pycharm Templates Videos
0
zsh에 0이 표시되지 않는 이유는 무엇입니까?
답변1
환경에 존재하지 않는 변수는 값이 없으므로 인쇄할 것이 없습니다. 변수가 마술처럼 값을 얻는 것은 아닙니다 0
. 변수가 정의되지 않으면 정의되지 않은 것입니다.
$ echo "$sandfadsf"
$ sandfadsf=0
$ echo $sandfadsf
0
따라서 run 을 실행하면 bash
bash 관련 변수가 BASH_SUBSHELL
설정되어 값을 갖게 됩니다. 을 실행하면 zsh
변수가 설정되지 않고 존재하지 않으므로 을 실행하면 echo $BASH_SUBSHELL
변수가 $BASH_SUBSHELL
아무것도 확장되지 않으므로 아무것도 인쇄되지 않습니다.
다음을 통해 모든 내용을 확인할 수 있습니다 set -x
.
## bash
$ set -x
$ echo $BASH_SUBSHELL
+ echo 0
0
$ zsh
+ zsh
% set -x
% echo $BASH_SUBSHELL
+zsh:4> echo
%