Linuxのコマンドラインを介して作業を行う場合は、ほとんどの場合、Bashシェルを使用します。シェルを介して実行されるプロセスに関連付けられた環境があることをご存知ですか?また、必要に応じて、実行しているタスクに合わせてこの環境を微調整できますか?この記事では、コマンドラインツール( env )について説明します。 -これにより、シェル環境にアクセスできるだけでなく、必要に応じてシェル環境に変更を加えることもできます。
ただし、その前に、このチュートリアルで説明されているすべてのコマンドと手順が、Ubuntu16.04LTSで実行されているBashシェルでテストされていることを述べておく価値があります。
Linuxenvコマンド
定義上、envコマンドを使用すると、変更された環境でプログラムを実行できます。以下は、manページに記載されているコマンドの構文です。
env [OPTION]... [-] [NAME=VALUE]... [COMMAND [ARG]...]
そして、これがenvについてのmanページの内容です:
Set each NAME to VALUE in the environment and run COMMAND.
次のQ&Aスタイルの例から、このコマンドがどのように機能するかについてのより良いアイデアが得られるはずです。
Q1。 envコマンドを使用してすべての環境変数にアクセスするにはどうすればよいですか?
ご存知かもしれませんが、Bash環境はVARNAME=VALUEエントリで構成されています。すべての環境変数とそれに関連付けられている値にアクセスするには、オプションを指定せずにenvコマンドを実行します。
env
この場合の上記のコマンドの出力は次のとおりです。
Q2。 envを使用して一時的に環境を変更するにはどうすればよいですか?
envが提供する主な機能は、プロセスの環境を一時的に変更する機能です。たとえば、実行時にUSER環境変数の値を表示する小さな実行可能ファイル(envと呼ばれる)を作成しました。
通常のシナリオでの出力は次のとおりです。
ここで、envコマンドを使用して、実行可能ファイル/プロセスのUSER環境変数の値を「himanshu」から「HTF」に一時的に変更しました。この場合に使用したコマンドは次のとおりです。
env USER=HTF ./env
この場合に生成される出力は次のとおりです。
したがって、実行可能ファイルが新しい値を返したことがわかります。
注:ツールの一般的な構文で示唆されているように、複数の環境変数の値を微調整して、プロセスにこれらの新しい値を使用させることができます。
Q3。 envを使用してプロセスに既存の環境を無視させる方法は?
必要に応じて、プロセスに既存の/継承された環境を無視させ、代わりに空の環境から開始することもできます。これは、 -iを使用して実行できます または--ignore-environment オプション。
例:
Q4。 envで出力に改行文字の代わりにNULを使用するにはどうすればよいですか?
上で説明した最初の例では、envによって生成された出力行は改行で区切られています。ただし、必要に応じて、envにNUL文字を区切り文字として使用させることができます。この機能には、-nullを使用してアクセスできます コマンドラインオプション。
env --null
以下はスクリーンショットの例です;
Q5。 envコマンドの終了ステータスに基づいてエラーを知る方法は?
envコマンドは、0、125、126、および127の終了コードを生成します。関連するエラーの説明は次のとおりです。
0 if no COMMAND is specified and the environment is output
125 if ‘env’ itself fails
126 if COMMAND is found but cannot be invoked
127 if COMMAND cannot be found
上記以外のエラーコードが発生した場合は、変更された環境で実行されたプロセス/コマンドによって返される終了ステータスになります。
完全なコマンドライン初心者の場合、このツールを日常的に必要としない可能性があります。ただし、それを知る価値がないというわけではありません。実際、envは多くの状況で非常に便利です。このチュートリアルで共有した例は、有利なスタートを切るのに十分なはずです。詳細については、コマンドのマニュアルページにアクセスするか、次のコマンドを実行してください。
info coreutils env invocation