※これは個人的な疑問のメモです。解答はありません。

### コマンドをパイプでつないでcdした時の挙動が、bashとzshで異なる ```sh jot -b a 3 | while read L; do cd $L; done
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<div class="section">
    #### bashのばあい
    
<ul>
<li>特にカレントディレクトリは変更されません。</li>
</ul>
</div>
<div class="section">
    #### zshのばあい
    
<ul>
<li>a/a/aディレクトリへ移動します。</li>
</ul>
</div>
</div>
<div class="section">
    ### 調査
    
<div class="section">
    #### ①実行時のwhileの中のPIDを確認(サブシェルになっているかどうか)
    ```sh
echo $$ &amp;&amp; jot -b a 3 | while read $L; do echo $$; done

#### bashのばあい
  • 同じPIDが出る
#### zshのばあい
  • 同じPIDが出る
→ どちらもサブシェルにはなってないっぽい?

#### ②cdコマンドの場所を確認 ```sh which cd
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
</div>
<div class="section">
    #### bashのばあい
    
<ul>
<li>/usr/bin/cd</li>
</ul>
</div>
<div class="section">
    #### zshのばあい
    
<ul>
<li>cd: shell built-in command</li>
</ul>ここで
```sh
% cat /usr/bin/cd
#!/bin/sh
# $FreeBSD: src/usr.bin/alias/generic.sh,v 1.2.10.1.8.1 2012/03/03 06:15:13 kensmith Exp $
# This file is in the public domain.
builtin ${0##*/} ${1+"$@"}

```ビルトインコマンドを呼び出しているだけ。→ /usr/bin/cdを呼んでいるのが怪しい?<br/>
<br/>


</div>
<div class="section">
    #### ③環境変数の引き継ぎを確認
    こんなシェルを用意
```sh
a=b
echo a1=$a
jot -b a 3 | while read L; do echo a=$L; a=$L; done
echo a2=$a

#### bashに食わせたばあい ```sh % bash a.sh a1=b a=a a=a a=a a2=b
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
</div>
<div class="section">
    #### zshに食わせたばあい
    ```sh
% zsh a.sh
a1=b
a=a
a=a
a=a
a2=a

```この結果だけを見ると、bashはサブシェルになってて、zshはサブシェルになってないような感じ。<br/>
<br/>


</div>
</div>
<div class="section">
    ### 結果:わからん
    
</div>