助け合いフォーラム

LPIC

LPIC Lv1-102(Ver5.0)
問題ID : 5022
問題を開く
コマンド実行時に何も環境変数が設定されていない状態にするのは次のうちどれか。

この問題はプレミアムコンテンツです。

上に戻る

envが効かない場合の調査方法について

投稿日 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コマンドが効いていない場合、一般的な原因の調査方法を
教えて下さい。

ご存じの方がおられたら、ご教示をお願いします。
宜しくお願いします。


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が効かないということなのでしょうか。 ご存じの方がおられたら、ご教示をお願いいたします。

2023/10/03 20:38

[root@rocky01 ~]# env -i echo $TMP1003
temptemp <-①
[root@rocky01 ~]# env -u TMP1003 echo $TMP1003
temptemp <-②

の場合、echoコマンドを実行する前にシェルが$TMP1003temptempに展開してしまうので、環境変数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 21:20

tnishita2様 ご回答、有難うございます。おかげさまで理解できました。 宜しくお願いします。

この返信に対して
コメントを記入できます

この投稿に対して返信しませんか?