Closed katataku closed 2 years ago
環境変数として管理するってことですかね? 環境変数を使うことは問題ないと思ってるんですが、こういう挙動が再現できなくならないか心配してます。
bash-3.2$ pwd
/Users/taku/42/github/minishell
bash-3.2$ unset PWD
bash-3.2$ pwd
/Users/taku/42/github/minishell
環境変数を使うことは問題ないと思ってるんですが、こういう挙動が再現できなくならないか心配してます。
なるほど〜、変数のない場合の挙動は気をつけないとでね。
シェルの内部変数についてはドキュメントだとここあたりですね。実際のbashの挙動的にも環境変数と同じ場所で管理していそうです。 https://www.gnu.org/software/bash/manual/bash.html#Bash-Variables
PWD
The current working directory as set by the cd builtin.
この辺の記載ってことですよね。 これって「環境変数で管理してるよ」じゃなくて「cdコマンドは、環境変数に出力する機能も持っているよ」という意味ですかね? なので、本当の管理の実態は別途管理が必要?かもです。
なるほど、envコマンドでシェル内部変数も出力されるので一緒に管理していると思っていましたが、「別途管理していて出力だけ一緒にしている可能性もある」ということですよね?でもbashの内部変数についてもchar **argvで渡ってくるので一緒に管理していそう?
確かにどっちの可能性もあるなと思いました!
環境変数で管理の方針にして、問題が見つかったらそのタイミングで再考しましょう〜
合点承知です〜〜〜〜、とりあえずenvモジュールを使って環境変数として管理する方向で進めてみます。
瞬殺?3pointsもいかないくらい。要件を減らしたらシンプルなのかも。もしかしたら対応できていないケースなどもあるかも?
@katataku もしかしたらOLD_PWDみたいなシェル内部変数を持つかもしれないんですけど、envモジュールで管理しちゃっていいですかね?