親bashスクリプトは子bashスクリプトのCD履歴を覚えていますか?

親bashスクリプトは子bashスクリプトのCD履歴を覚えていますか?

例:

メインスクリプト.sh

cd /mnt/something
./buildscripts/000-script.sh

000-script.sh

cd /mnt/otherthing
mkdir something
exit

答え1

はい、実行プロセスは次のとおりです。いいえ親プロセスの作業ディレクトリを変更します。

例:

  • caller.sh

    #!/bin/bash
    echo -n "Caller 1 " ; pwd
    ./callee.sh
    echo -n "Caller 2 " ; pwd
    
  • 受信者.sh

    #!/bin/bash
    echo -n "Callee 1 " ; pwd
    cd /tmp
    echo -n "Callee 2 " ; pwd
    exit
    

呼び出しがcaller.sh生成されます

Caller 1 /Users/corti/tmp
Callee 1 /Users/corti/tmp
Callee 2 /tmp
Caller 2 /Users/corti/tmp

印刷時に見られるように、親プロセスCaller 2にはまだ同じ作業ディレクトリがあります。

答え2

「子供」は何も覚えていません。これは、現在の作業ディレクトリ(cwd)から始まるプロセスの基本概念です。 Linuxシステムで/ proc / *を見ると、プロセスごとにこのエントリを見ることができます。

関連情報