BASHプログラミング
 Computer >> コンピューター >  >> プログラミング >> BASHプログラミング

PowerShellの環境変数

環境変数は、Linux、Mac、またはWindowsコンピューターのグローバル設定であり、コマンドの実行時にシステムシェルが使用するために保存されます。多くは、インストール時またはユーザー作成時にデフォルトで設定されます。

たとえば、ログイン時にホームディレクトリが環境変数として設定されます。PowerShellでの外観はオペレーティングシステムによって異なります。

Windowsの場合:

PS C:\Users\bogus> Get-Variable HOME -valueOnly
C:\Users\bogus

Linuxの場合:

pwsh> Get-Variable HOME -valueOnly
HOME=/home/seth

Macの場合:

pwsh> Get-Variable HOME -valueOnly
HOME=/Users/bogus

通常、環境変数を直接使用することはありませんが、必要に応じて個々のアプリケーションやデーモンによって参照されます。ただし、環境変数は、デフォルト設定を上書きする場合、またはシステムが独自に作成する理由がない新しい設定を管理する必要がある場合に役立ちます。

この記事は、オープンソースのPowerShell環境の環境変数に関するものであるため、Windows、Linux、およびMacで実行されているPowerShellに適用できます。 Bashシェルのユーザーは、Bash環境変数に関する私の記事を参照する必要があります。

この記事では、PowerShellをオープンソースのオペレーティングシステムLinuxで実行しました。コマンドはプラットフォームに関係なく同じですが、出力は異なります(たとえば、ユーザー名が sethである可能性は統計的に低いです。 。

環境変数とは何ですか?

PowerShellの環境変数は、オペレーティングシステム環境に関する情報をシステムに提供する特殊な種類の変数です。環境変数を使用すると、Windowsレジストリ内の変数、および特定のセッションに設定された変数を表示および変更できます。

PowerShellでは、環境変数は Env:に保存されます 「ドライブ」、PowerShell環境プロバイダーからアクセス可能 、PowerShellのサブシステム。これは物理ドライブではなく、仮想ファイルシステムです。

Env:には環境変数が存在するため ドライブ、環境:を前に付ける必要があります それらを参照するときに変数名に。または、作業場所を環境:に設定することもできます Set-Locationで運転する すべての環境変数をローカル変数として扱うことができるようにするコマンド:

PS> Set-Location Env:
PS> pwd

Path
----
Env:/

環境変数は、ログインセッションに関する情報をコンピューターに伝達します。たとえば、アプリケーションがデフォルトでデータファイルを保存する場所を決定する必要がある場合、通常は HOMEを呼び出します。 環境変数。おそらくHOMEを設定したことはありません 自分で変数を変更できますが、ほとんどの環境変数はオペレーティングシステムによって管理されているため、存在します。

Get-ChildItem を使用して、システムに設定されているすべての環境変数を表示できます。 環境:内からのコマンド ドライブ。リストは長いので、出力を out-host -pagingにパイプします 読みやすくするために:

PS> Get-ChildItem | out-host -paging
LOGNAME      seth
LS_COLORS    rs=0:mh=00:bd=48;5;232;38;5;
MAIL         /var/spool/mail/seth
MODULEPATH   /etc/scl/modulefiles:/etc/scl/modulefiles
MODULESHOME  /usr/share/Modules
OLDPWD       /home/seth
PATH         /opt/microsoft/powershell/6:/usr/share/Modules/bin
PSModulePath /home/seth/.local/share/powershell/Modules
PWD          /home/seth
[...]

環境:に参加していない場合 ドライブの場合、 Env:を追加することで、同じことができます。 あなたの命令に:

PS> Get-ChildItem Env: | out-host -paging
LOGNAME      seth
LS_COLORS    rs=0:mh=00:bd=48;5;232;38;5;
MAIL         /var/spool/mail/seth
MODULEPATH   /etc/scl/modulefiles:/etc/scl/modulefiles

環境変数は、通常の変数に使用されるのと同じ構文のいくつかを使用して、設定、呼び出し、およびクリアできます。他の変数と同様に、セッション中に設定したものはすべて、その特定のセッションにのみ適用されます。

変数に永続的な変更を加える場合は、WindowsのWindowsレジストリ、またはシェル構成ファイル(〜/ .bashrc など)で変更する必要があります。 )LinuxまたはMacの場合。 PowerShellでの変数の使用に慣れていない場合は、続行する前にPowerShellの記事で変数を読んでください。

環境変数は何に使用されますか?

さまざまな環境変数が、コンピューター内のいくつかの異なるシステムで使用されます。あなたのパス たとえば、変数はシェルにとって不可欠ですが、たとえばJavaにとってはそれほど重要ではありません(パスもありますが、一般的なシステムフォルダではなく、重要なJavaライブラリへのパスです)。ただし、ユーザー 変数は、サービスを要求しているユーザーを識別するために、いくつかの異なるプロセスで使用されます。

オープンソースのNullsoftScriptableInstall System(NSIS)フレームワークのようなインストーラーウィザードは、新しいアプリケーションをインストールするときに環境変数を更新します。オペレーティングシステムの目的のツールセットの外部に何かをインストールする場合、環境変数を自分で管理しなければならない場合があります。または、好みに合わせて環境変数を追加することもできます。

通常の変数とどのように異なりますか?

通常の変数を作成すると、その変数はローカルと見なされます。つまり、変数を作成したシェルの外部では定義されていません。

たとえば、変数を作成します:

PS> Set-Variable -Name VAR -Value "example"
PS> gv VAR -valueOnly
example

現在のシェル内からでも、新しいシェルを起動します:

PS> pwsh
PS c:\> gv VAR -valueOnly
gv : Cannot find a variable with the name 'example'.

一方、環境変数は、スコープがグローバルであることが意図されています。それらは、それらを作成したシェルとは別に存在し、他のプロセスで使用できます。

環境変数をどのように設定しますか?

環境変数を設定するときは、 $ Env:を使用して、それが環境変数であることを明示する必要があります。 表記:

PS Env:/> $Env:FOO = "hello world"
PS Env:/> Get-ChildItem FOO
hello world

テストとして、新しいセッションを起動し、作成したばかりの変数にアクセスします。ただし、変数は環境変数であるため、先頭に $ Env:を付ける必要があります。 :

PS Env:/> pwsh
PS c:\> $Env.FOO
hello world

子プロセスで変数を使用できるようにしたとしても、それは一時変数にすぎません。動作し、存在することを確認でき、どのプロセスからでも使用できますが、作成したシェルを閉じると破棄されます。

プロファイルに環境変数を設定するにはどうすればよいですか?

環境変数をセッション間で強制的に保持するには、 CurrentUser、AllHostsなどのPowerShellプロファイルに追加する必要があります。 HOME / Documents / Profile.ps1にあるプロファイル :

PS> Add-Content -Path $Profile.CurrentUserAllHosts -Value '$Env:FOO = "hello world"'

この行を追加すると、起動されたPowerShellセッションが FOOをインスタンス化します。 環境変数であり、その値を hello worldに設定します 。

現在、PowerShellセッションを制御するデフォルトのプロファイルは6つあるため、詳細については、Microsoftの開発ブログを参照してください。

新しい環境変数をどのように発見しますか?

環境変数は自由に作成および操作できますが、一部のアプリケーションはそれを実行します。この事実は、環境変数の多くがほとんどのアプリケーションで使用されていないことを意味します。独自の任意の変数を追加すると、一部はまったく使用されない可能性があります。

したがって、問題は次のとおりです。どの環境変数が意味があるかをどのように見つけますか?答えは、アプリケーションのドキュメントにあります。

たとえば、Pythonは、適切なPythonパスをパスに追加することを提案します。 インストール中の環境変数。 [注:パス?] 辞退した場合は、環境変数を変更する方法がわかったので、自分で値を設定できます。

インストールするすべてのアプリケーションについても同じことが言えます。インストーラーは環境に適切な変数を追加することが期待されているため、環境:を変更する必要はありません。 手動で。アプリケーションを開発している場合、インストーラーはユーザーに対して同じことを行う必要があります。

個々のアプリケーションの重要な変数を見つけるには、それらのユーザーと開発者のドキュメントを参照してください。


  1. Rubyで環境変数を使用する方法

    環境変数はキーと値のペアであり、次のようになります。 KEY=VALUE これらの変数を使用して、コンピューター内のすべてのプログラム間で構成オプションを共有します。 そのため、それらがどのように機能するか、およびENVを使用してRubyプログラムからそれらにアクセスする方法を学ぶことが重要です。 特別な変数。 環境変数の例 : デフォルトのエディターの構成 宝石の場所をRubyに伝える(GEM_PATH / GEM_HOME ) APIキーを、ソース管理(git)にコミットせずにアプリケーションに渡す オペレーティングシステムがバイナリファイル(Windowsでは.exe)を検

  2. Windows 10 で環境変数を設定する方法

    環境変数は、PC で実行されているプログラムを構成するために使用されるグローバル値です。技術的に聞こえますが、実際には、さまざまなアプリが接続するための共有構成ストアにすぎません。 環境変数は個々のユーザー アカウントに関連付けられているため、ユーザーごとに異なる構成を使用できます。また、Windows がインストールされているディレクトリを常に指す %windir% などのグローバル システム変数もあります (例:C:Windows)。この値をハードコーディングする代わりに、アプリは Windows ディレクトリにアクセスする必要があるときに %windir% を参照できます。 多く