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

%

おすすめ記事