zsh와 bash 간의 출력

zsh와 bash 간의 출력

이 명령을 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 을 실행하면 bashbash 관련 변수가 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

%

관련 정보