私が知っている限り、プロセスは親プロセスの環境を変更できません。ただし、(CurseベースのファイルマネージャであるGNUのMidnight Commander)を実行して終了するmc
と、他の結果が発生します$PWD
。
[localhost ~]$ echo $PWD
/home/pedro
[localhost ~]$ mc
removed `/tmp/mc-pedro/mc.pwd.5616'
[localhost pedro]$ echo $PWD
/nfs/home/pedro
/home
私はそれがシンボリックリンクなので、実際には「変更」されていないことを知っていますが、/nfs/home
とにかく$PWD
それは文字列であり、今は別の文字列です。
ここで何が起こっているのでしょうか?
答え1
コマンドはmc
スクリプトのエイリアスなので. /some/script
現在の環境(一部のシェル.
と同じ)source
このように実行されるスクリプトは同じ環境で実行されるため、呼び出しシェルの環境を変更する可能性が高くなります。