Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

環境変数の扱い方 #63

Open
1 task
moromin opened this issue Oct 7, 2021 · 2 comments
Open
1 task

環境変数の扱い方 #63

moromin opened this issue Oct 7, 2021 · 2 comments
Assignees
Labels
discussion Just want ideas todo Not a bug, but need to be changed

Comments

@moromin
Copy link
Collaborator

moromin commented Oct 7, 2021

概要

environを書き換えたり削除したりするのは、現状使える関数では無理そう。
そのため、環境変数を扱う方法をリストに戻すか、ハッシュテーブルにするか、いずれかの方法で管理したい。
cd コマンドの引数なしや、環境変数展開などのしやすさを考えれば、getenv(key)のような動作ができそうなハッシュテーブルの方が使い勝手は良さそう。
実装するとしたらget_hash_value(key)みたいな感じで使えると思う。

でも、envコマンドとか実行したときの表示順序がenvironとずれそうだからやっぱりリストの方がいいかも・・・

Who

多分わい

Where

  • main: minishellを実行した瞬間のenvironの値だけコピー
  • expand: 環境変数展開
  • execute: builtin commandの実行

How

とりあえず👇を参考にハッシュ実装中です。
https://it-ojisan.tokyo/c-hashtable/

何をすれば Issue が解決するか、追加/変更/削除する点

  • ハッシュテーブルも結局mallocを使うことになるので、その場合のエラー処理方法

参考リンク(あれば)

以下のリンクからテンプレートを拝借

@moromin moromin self-assigned this Oct 7, 2021
@moromin moromin added todo Not a bug, but need to be changed discussion Just want ideas labels Oct 7, 2021
@moromin
Copy link
Collaborator Author

moromin commented Oct 8, 2021

環境変数の_には、最後に実行したファイルの絶対パスが格納されるらしい

$ env
...
_=/usr/bin/env

@takumihara takumihara self-assigned this Oct 8, 2021
@moromin
Copy link
Collaborator Author

moromin commented Oct 10, 2021

envコマンド実行時のこの環境変数の場所に新しい値をexportするなら、t_env_var構造体を双方向リストにしないときつい。。。
ただ、exportコマンドなどのmanには、特に_がどこに入るとか書いてなかった気がするので、そこまで実装しなくてもいいはしている。(楽)

$ env
...
# <- export KEY=VALUE
_=/usr/bin/env

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
discussion Just want ideas todo Not a bug, but need to be changed
Projects
None yet
Development

No branches or pull requests

2 participants