teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

3

補足情報を追加

2018/12/08 13:15

投稿

Mild_Boss
Mild_Boss

スコア13

title CHANGED
File without changes
body CHANGED
@@ -2,16 +2,27 @@
2
2
 
3
3
  例えば、ターミナル上で printenv コマンドを実行すると現在の環境変数の一覧を知ることが出来ます。
4
4
 
5
- それらがどこで定義されたがを知る良い方法ってありますか?
5
+ それらがどこで"定義"されたがを知る良い方法ってありますか?
6
6
 
7
+ 環境変数を指定すると、それがどこで定義されたのかさっと表示するようなコマンドや良い方法はないのでしょうか?
8
+ (後述しますが、printenv や grep で総当りする方法は試しましたが時間がかかるので"良い"方法とは思えません)
9
+
7
10
  例えばですが、
8
- file コマンドはファイルを指定するとそのファイルの種別を教えてくれます。
9
- 環境変数を指定すると、それがどこで定義されたのかさっと表示するようなコマンドや方法はないのでしょうか?
10
- (そのコマンドを利用すると、その環境変なら /etc/profile でされると知らせてくれるような…)
11
+ type というコマンドは引に指定されたコマンドがシェルのビルトイン関数か、もしそうでなかったらこのパスに存在するということを示してくれます。
11
12
 
13
+ ```bash
14
+ $ type cd
15
+ cd is a shell builtin
16
+ $ type python
17
+ python is /usr/bin/python
18
+ ```
19
+
20
+ このようにさっと(もしくは2桁秒程度の時間で)環境変数の定義情報について知らせてくれる方法はないのでしょうか…?
21
+ (envinfo HOGE と入力したら「HOGE was defined in /etc/hoge/foo.conf」と出力されるような…)
22
+
12
23
  補足:
13
24
  試しに、printenv で表示される環境変数に対して /etc とホームディレクトリ配下の全テキストファイルを grep/fgrep してそれらが定義されている箇所があるかを調べるシェルスクリプトを作ってみました。
14
25
  ただし、すべての環境変数でこれをやるには時間がかかること(10分程度)といくつかの環境変数(e.g. $COLOURFG, $OLDPWD)が見つかりませんでした。
15
26
  OLDPWD や PWD などはログインシェルが勝手に定義してると知っているのですが、それ以外のものもあります。
16
27
 
17
- ぜひ、良い方法をご存知の方はお教えい。
28
+ ぜひ、良い方法をご存知の方はお教えいたければ幸です

2

日本語文法ミス修正

2018/12/08 13:15

投稿

Mild_Boss
Mild_Boss

スコア13

title CHANGED
File without changes
body CHANGED
@@ -10,8 +10,8 @@
10
10
  (そのコマンドを利用すると、その環境変数なら /etc/profile で定義されてると知らせてくれるような…)
11
11
 
12
12
  補足:
13
- 試しに、printenv で表示される環境変数に対して /etc とホームディレクトリ配下のテキストファイル内に grep/fgrep して定義されている箇所があるかを調べるシェルスクリプトを作ってみました。
13
+ 試しに、printenv で表示される環境変数に対して /etc とホームディレクトリ配下のテキストファイル grep/fgrep してそれらが定義されている箇所があるかを調べるシェルスクリプトを作ってみました。
14
- ただし、すべての環境変数でこれをやるには時間がかかること(10分程度)といくつかの環境変数(e.g. $_, $OLDPWD)が見つかりませんでした。
14
+ ただし、すべての環境変数でこれをやるには時間がかかること(10分程度)といくつかの環境変数(e.g. $COLOURFG, $OLDPWD)が見つかりませんでした。
15
15
  OLDPWD や PWD などはログインシェルが勝手に定義してると知っているのですが、それ以外のものもあります。
16
16
 
17
17
  ぜひ、良い方法をご存知の方はお教えください。

1

例示の編集

2018/12/08 13:00

投稿

Mild_Boss
Mild_Boss

スコア13

title CHANGED
File without changes
body CHANGED
@@ -2,11 +2,12 @@
2
2
 
3
3
  例えば、ターミナル上で printenv コマンドを実行すると現在の環境変数の一覧を知ることが出来ます。
4
4
 
5
- それらがどこで定義されたか(例えば /etc/profile)を知る良い方法ってありますか?
5
+ それらがどこで定義されたを知る良い方法ってありますか?
6
6
 
7
7
  例えばですが、
8
8
  file コマンドはファイルを指定するとそのファイルの種別を教えてくれます。
9
9
  環境変数を指定すると、それがどこで定義されたのかさっと表示するようなコマンドや方法はないのでしょうか?
10
+ (そのコマンドを利用すると、その環境変数なら /etc/profile で定義されてると知らせてくれるような…)
10
11
 
11
12
  補足:
12
13
  試しに、printenv で表示される環境変数に対して /etc とホームディレクトリ配下のテキストファイル内に grep/fgrep して定義されている箇所があるかを調べるシェルスクリプトを作ってみました。