katataku / minishell

1 stars 0 forks source link

builtin cd #57

Closed katataku closed 2 years ago

hayashi-ay commented 2 years ago

@katataku もしかしたらOLD_PWDみたいなシェル内部変数を持つかもしれないんですけど、envモジュールで管理しちゃっていいですかね?

katataku commented 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
hayashi-ay commented 2 years ago

環境変数を使うことは問題ないと思ってるんですが、こういう挙動が再現できなくならないか心配してます。

なるほど〜、変数のない場合の挙動は気をつけないとでね。

シェルの内部変数についてはドキュメントだとここあたりですね。実際のbashの挙動的にも環境変数と同じ場所で管理していそうです。 https://www.gnu.org/software/bash/manual/bash.html#Bash-Variables

katataku commented 2 years ago
PWD
The current working directory as set by the cd builtin.

この辺の記載ってことですよね。 これって「環境変数で管理してるよ」じゃなくて「cdコマンドは、環境変数に出力する機能も持っているよ」という意味ですかね? なので、本当の管理の実態は別途管理が必要?かもです。

hayashi-ay commented 2 years ago

なるほど、envコマンドでシェル内部変数も出力されるので一緒に管理していると思っていましたが、「別途管理していて出力だけ一緒にしている可能性もある」ということですよね?でもbashの内部変数についてもchar **argvで渡ってくるので一緒に管理していそう?

katataku commented 2 years ago

確かにどっちの可能性もあるなと思いました!

環境変数で管理の方針にして、問題が見つかったらそのタイミングで再考しましょう〜

hayashi-ay commented 2 years ago

合点承知です〜〜〜〜、とりあえずenvモジュールを使って環境変数として管理する方向で進めてみます。

hayashi-ay commented 2 years ago

瞬殺?3pointsもいかないくらい。要件を減らしたらシンプルなのかも。もしかしたら対応できていないケースなどもあるかも?