助け合いフォーラム
LPIC Lv1-102(Ver5.0)
問題ID : 5022
問題を開く
コマンド実行時に何も環境変数が設定されていない状態にするのは次のうちどれか。
この問題はプレミアムコンテンツです。
envが効かない場合の調査方法について
k
kz5835
投稿日 2023/10/03
初歩的な質問ですみません。
私の環境:Rocky Linux release 8.8 (Green Obsidian)
で、この問題で解説されているenvコマンドが効かない様に見えます。
(envコマンドを入れてみた場合の表示)
[root@rocky01 ~]# export TMP1003=temptemp
[root@rocky01 ~]# echo $TMP1003
temptemp
[root@rocky01 ~]# env -i echo $TMP1003
temptemp <-①
[root@rocky01 ~]# env -u TMP1003 echo $TMP1003
temptemp <-②
envコマンドが効いている場合、①、②の箇所でなにも
表示されないと思っています。
このenvコマンドの利用方法が誤解であれば、その旨教えて下さい。
envコマンドが効いていない場合、一般的な原因の調査方法を
教えて下さい。
ご存じの方がおられたら、ご教示をお願いします。
宜しくお願いします。
2023/10/03 20:38
[root@rocky01 ~]# env -i echo $TMP1003
temptemp <-①
[root@rocky01 ~]# env -u TMP1003 echo $TMP1003
temptemp <-②
の場合、echo
コマンドを実行する前にシェルが$TMP1003
をtemptemp
に展開してしまうので、環境変数TMP1003の中身を表示しているのではなく、echo temptemp
を実行していることになってしまっています。環境変数が空になった上でコマンドが実行されていることを確認するには例えば以下のようにします:
$ export TMP1003=temptemp
$ env bash -c 'echo TMP1003=$TMP1003'
TMP1003=temptemp # 環境変数TMP1003は残っている
$ env -i bash -c 'echo TMP1003=$TMP1003'
TMP1003= # 環境変数TMP1003が消えた
$ env -u TMP1003 bash -c 'echo TMP1003=$TMP1003'
TMP1003= # 環境変数TMP1003が消えた
コメント
この投稿に対して返信しませんか?
k kz5835
2023/10/03 10:04
投稿者からの追加情報です。 env自身に対しては、envコマンドが効くことに気がつきました。 (envに対してenvを実行した場合の表示) [root@rocky01 ~]# env | grep TMP1003 TMP1003=temptemp [root@rocky01 ~]# [root@rocky01 ~]# env -u TMP1003 env | grep TMP1003 [root@rocky01 ~]# [root@rocky01 ~]# env -i env [root@rocky01 ~]# echoを含む一部コマンド(もしくはechoだけ?)には envが効かないということなのでしょうか。 ご存じの方がおられたら、ご教示をお願いいたします。