Re: 問題ID:27946について

この質問の投稿一覧へ

なし Re: 問題ID:27946について

msg# 1.1
depth:
1
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2017-9-15 2:04
pancake  新米   投稿数: 3
これは、「削除」の影響する範囲を、「envの環境下限定で見る」か、「envを発行する前と、envの効力が終わった後の環境下も含めて見る」かの違いなのではないでしょうか。
問題27946の実行例を実際にやってみるとわかるのですが、全部の実行例を実施した後、つまり、「env -u」も実行し、そのコマンドの効力が終了した後、「env -u」で指定した環境変数は残っています。その意味では「一時的」に削除ですね。
ただ、じゃあ、manが間違っているのか、というとそうではなく、「env -u」というコマンドを実行している環境内に立場を置いてみると、つまり「env -u 環境変数」というオプションを発行している間だけを見た場合は、指定された環境変数は「ずっと存在しない状態」、つまり「削除された状態」に見えると思います。
env自体が、もともと、どのオプションを指定しても「環境変数をある値に変更して実行」「その環境変数はenvの影響がなくなった後は元に戻る」動きだと思います。それが、manでいう「変更した環境でプログラムを実行する」ということではないでしょうか。
その「ある値」が、「存在しない」という値と同じだった場合、envの環境にある間は「削除」されている状態になる、ということだと思われるのですが。
ちなみに、「-i」オプションは、envの効力がある間は「何も設定されていない状態」、つまり「全ての変数が削除された状態」に変更していますが、envの効力がなくなった後は、やはり元に戻ります。言い方を変えると、「-u」は特定の変数だけ、「-i」は全部の環境変数を、いずれもenvの効力が効いている間だけ「削除」しているのではないでしょうか。
間違っていたらごめんなさい、実行例を実施してみた限りでは、そのように思えます。

投稿ツリー

  >フォーラム検索へ


Copyright (c) 2020 Ping-t All rights reserved.