Linux で環境変数の定義場所を知る良い方法ってありますか?
例えば、ターミナル上で printenv コマンドを実行すると現在の環境変数の一覧を知ることが出来ます。
それらがどこで"定義"されたがを知る良い方法ってありますか?
環境変数を指定すると、それがどこで定義されたのかさっと表示するようなコマンドや良い方法はないのでしょうか?
(後述しますが、printenv や grep で総当りする方法は試しましたが時間がかかるので"良い"方法とは思えません)
例えばですが、
type というコマンドは引数に指定されたコマンドがシェルのビルトイン関数か、もしそうでなかったらこのパスに存在するということを示してくれます。
bash
1$ type cd 2cd is a shell builtin 3$ type python 4python is /usr/bin/python
このようにさっと(もしくは2桁秒程度の時間で)環境変数の定義情報について知らせてくれる方法はないのでしょうか…?
(envinfo HOGE と入力したら「HOGE was defined in /etc/hoge/foo.conf」と出力されるような…)
補足:
試しに、printenv で表示される環境変数に対して /etc とホームディレクトリ配下の全テキストファイルを grep/fgrep してそれらが定義されている箇所があるかを調べるシェルスクリプトを作ってみました。
ただし、すべての環境変数でこれをやるには時間がかかること(10分程度)といくつかの環境変数(e.g. $COLOURFG, $OLDPWD)が見つかりませんでした。
OLDPWD や PWD などはログインシェルが勝手に定義してると知っているのですが、それ以外のものもあります。
ぜひ、良い方法をご存知の方はお教えいただければ幸いです。
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/12/09 17:42