web-dev-qa-db-ja.com

PATHやその他の環境変数とは何ですか、またそれらをどのように設定または使用できますか

に関する質問

  • 環境変数の設定
  • PATHname__

ここでは非常に一般的であり、ほとんどの場合、答えは互いに非常によく似ています。将来的には、これに対する質の高いQ/Aがあればいいでしょう。

実行可能ファイルPATHname__のような環境変数とは何ですか?また、主要なオペレーティングシステムでそれらを変更して使用するにはどうすればよいですか?

良い答えには、環境変数、特にPATHname__がOSにとってどのような意味を持つのかについての簡単な説明と、それに応じてそれらを設定して読み取る方法に関する簡単なガイドラインが含まれます。

335
slhck

環境変数とは

環境変数は、オペレーティングシステムやユーザーセッションなど、現在の環境に関連する値を保持します。

パス

最もよく知られているものの1つは、Windows、Linux、およびMac OS XではPATHと呼ばれています。これは、コマンド上でファイルへのパス全体を知らずに入力せずに起動できるマシン上の実行可能プログラム*が置かれているディレクトリを指定します。ライン。 (またはWindowsでは、スタートメニューのRunダイアログまたは Win+R).

LinuxおよびMac OS Xでは、通常、現在のユーザーに関連するすべてのbinおよびsbinディレクトリを保持しています。 Windowsでは、少なくともC:\WindowsおよびC:\Windows\system32ディレクトリが含まれています。そのため、コマンドラインからruncalc.exeまたはnotepad.exeを実行できます。またはRundialog、ただしfirefox.exeはできません。 (FirefoxはC:\Program Files\Mozilla Firefoxにあります。Firefoxの組み込み方法については、 here を参照してください。)

たとえば、Windowsのコマンドラインでcalc.execanは省略可能)と入力すると、Windows Calculatorが起動します。

* .exe を編集することで%PATHEXT%以外のファイル拡張子のサポートを追加できます。

その他の

他の変数は、どの種類の端末が使用されているか(Linux/Mac OS XではTERM)、またはWindowsではWindowsフォルダがある場所(例えば%WINDIR%C:\Windows)をプログラムに指示することがあります。

新しい環境変数を作成する

Windows、Linux、およびUnixでは、新しい環境変数を作成することができ、その値は起動時にすべてのプログラムで使用可能になります。

これは、複数のマシンにインストールまたはデプロイされ、それらのマシンに固有の値を参照する必要があるスクリプトまたはプログラムを作成するときに使用できます。プログラム固有の構成設定を使用しても同様の効果が得られますが、複数のプログラムが同じ値にアクセスする必要がある場合は、環境変数を使用してこれを行う方が簡単です。

Windows

GUI

  1. Control Panel » System » Advanced » Environment Variablesを開きます。

  2. [ファイル名を指定して実行]ダイアログにcontrol sysdm.cpl,,3を入力します(Win+R)をクリックしてEnvironment Variablesをクリックします。
    ユーザー変数を編集するには、次のように入力することもできます。

    %windir%\System32\rundll32.exe sysdm.cpl,EditEnvironmentVariables
    

    ファイル名を指定して実行ダイアログで。

  3. (マイ)コンピュータを右クリックしてプロパティをクリックするか、単にを押します。 Win+Break

    • XPでAdvanced » Environment Variablesをクリックします。
    • Vistaでは+ Advanced system settings » Environment Variablesをクリックしてください。
  4. 同じ場所にたどり着くには、[スタート]メニュー/ [画面]検索ボックスに「環境変数」と入力するなど、さまざまな方法があります。

Windowsの環境変数は、ユーザー固有の値とマシン/システム固有の値に分けられます。その値を表示して編集できます。打ち上げ時の現在の値は、すべてのプログラムで利用可能になります。

Rapid Environment Editor もあります。これは、システム設定を詳しく調べる必要なしに、Windowsで環境変数を設定および変更するのに役立ちます。パス環境を非常に便利に編集できるWindows用のもう一つのオープンソースプログラムは パスエディタ です。

コマンドライン

フォーマット

Windowsの環境変数は、名前を囲むパーセント記号(%)で示されています。

%name%

エコー

環境変数の値をcmd.exeに表示するには、echo %name%と入力します。

C:\>echo %USERPROFILE%
C:\Users\Daniel

セット

変数をcreate/setするには、set varname=valueを使用します。

C:\>set FunnyCatPictures=C:\Users\Daniel\Pictures\Funny Cat Pictures

C:\>set FunnyCatPicturesTwo=%USERPROFILE%\Pictures\Funny Cat Pictures 2

append/add変数にするにはset varname=value;%varname%を使います:

C:\>set Penguins=C:\Linux

C:\>set Penguins=C:\Windows;%Penguins%

C:\>echo %Penguins%
C:\Windows;C:\Linux

このように設定された環境変数は、それらが設定されているコマンドプロンプトプロセスの残りの期間に使用可能であり、変数が設定された後に開始されたプロセスに使用可能です。

setx

create/set変数恒久的にするには、setx varname "value"を使用します。

C:\>setx FunnyCatPictures "C:\Users\Daniel\Pictures\Funny Cat Pictures"

[Restart CMD]

C:\>echo %FunnyCatPictures%
C:\Users\Daniel\Pictures\Funny Cat Pictures

setとは異なり、等号はなく、値にスペースが含まれる場合は値を引用符で囲む必要があります。変数はスペースを含む文字列に展開される可能性があることに注意してください(たとえば、%PATH%C:\Program Filesになる)ので、変数を含む値を引用符で囲むことをお勧めします。

Vistaより前のバージョンのWindowsに手動でsetxを追加する必要があります。
Windows XP Service Pack 2サポートツール

Windows環境変数のリスト

こちらデフォルトの環境変数のリストです。これらはWindowsに組み込まれています。いくつかの例は次のとおりです。%WINDIR%%SystemRoot%%USERPROFILE%、および%APPDATA%。 Windowsのほとんどの名前と同様に、これらは大文字と小文字を区別しません。

Unix派生物(FreeBSD、GNU/Linux、OS X)

Linuxの環境変数には、$ HOMEや$ HOSTNAMEなどのドル記号($)が前に付きます。そのことを示すために、よく知られた標準的な変数の多くが大文字で記載されています。変数名では大文字と小文字が区別されます。つまり、$ Userと$ USERはシェルの観点からはまったく無関係です。

Unix派生物は、/etcフォルダーにほとんど置かれているシェルスクリプトでシステム全体の変数を定義しますが、ホームフォルダーに置かれているスクリプトでそれらの変数にユーザー固有の値が与えられるかもしれません(例えば、/etc/profile$HOME/.bash_profile)。ホームフォルダの.profileファイルは、ユーザー変数を定義するための一般的な場所です。

変数の設定

これらのファイルは通常のシェルスクリプトであり、単なる環境変数宣言以外のものを含むことができます。環境変数を設定するには、exportを使用します。端末に現在定義されている環境変数を表示するには、envを実行します。

exportコマンドは、変数を定義するための標準的な方法です。構文は非常に直感的です。結果はこれら2行で同じですが、POSIX Bourne Shell以前への移植性が必要な場合には最初の方法が適しています。

var=value; export var
export var=value

Cシェルとその子孫はまったく異なる構文を使用します。そこでは、コマンドはsetenvです。

このトピックに関するより徹底的な議論についてはLinuxドキュメンテーションプロジェクト、 Path HOWTO を見てください。

おそらく一般的な考えに反して、OS XはLinuxよりも「Unix」です。すでに述べたファイルに加えて、これらのファイルで$ PATHを変更することができます。

  • /etc/pathsには、/bin/usr/sbinのように、パスに追加されるすべてのデフォルトディレクトリが含まれています。
  • /etc/paths.d内の任意のファイル - システム全体またはユーザー固有の設定ファイルに触れることなく、提供される実行可能ファイルをシェルから利用可能にするためにインストーラによって一般的に使用されます。これらのファイルは単に1行に1つのパスを含みます。例:/プログラム/ Mozilla /カレンダー/ bin。

外部リンク:

XPの環境変数
Windows XP Service Pack 2サポートツールsetxを含む)
Windows VistaおよびWindows 7の環境変数
[実行]ダイアログボックスに実行ファイルを追加する
Mac OSXのヒント - 環境変数の設定
TLDP:Path Howto

328
Daniel Beck

この記事はDanielのものよりも技術的な観点からのものですが、それほど概念を説明していません。


ウィキペディアの記事 も参考になります。

LinuxとほとんどのBSD

ほとんどのコマンドラインシェルでは、一時的な環境変数はexport(sh、bash、zsh)またはsetenv(csh、tcsh)コマンドを使用して設定されます。

  • Bashまたはzshで$HOME/bin$PATHに追加する例:

    export PATH="$HOME/bin:$PATH"
    

    (この特定のケースでは、exportはすでに環境の一部であるため、PATHは不要です。)

  • csh、tcsh:

    setenv PATH "$HOME/bin:$PATH"
    

永続的な環境変数は、いくつかの段階で設定できます。

  • ログイン:

    • ログインセッションの設定:Linuxのpam_env。通常は/etc/environmentから読み取ります。

    • ターミナルログイン:シェルの「プロファイル」ファイル.

      • bash/etc/profile~/.bash_profile~/.bash_login~/.profileのうちの最初のものを使用します。マニュアルページbash(1)セクション呼び出し

        多くの場合、ユーザーのプロファイルファイルには~/.bashrcの明示的な呼び出しも含まれています。

      • zsh:マニュアルページzsh(1) section起動/停止ファイル

      • cshと他のシェル:適切なマニュアルページを参照してください。

    • グラフィカルログイン:わかりません。ログインマネージャによって異なります。 GDMは私のシステムでは~/.profileを読んでいるようです。

  • ターミナルウィンドウを開く:

    • bash/etc/bash.bashrc~/.bashrcを使います。

Windows NTシリーズ

  • そのウィンドウの環境変数を変更するには、コマンドプロンプト(cmd.exe)でset name=valueを使用します。

    c:\bin%PATH%に追加するには、次のようにします。

    set path=%path%;c:\bin
    

    これは、そのcmd.exeプロセス、およびそれから起動されたすべての新しいプロセスにのみ影響します。

  • 永続的な変更を加えるには、コントロールパネル→システム→詳細設定→環境変数を使用します。 ( docs

    注:ユーザー設定は通常システム設定をオーバーライドしますが、PATH変数は特別に処理されます。システム設定とユーザー設定の両方が最終値にマージされます。

    変更はレジストリに保存され(下記参照)、例えばスタートメニューを通してエクスプローラ(グラフィカルシェル)によって作成されたすべての新しいプロセスに即座に適用されます。

  • システム全体の環境変数はレジストリHKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environmentに保持され、システム起動時にロードされます。

    ユーザー環境はHKCU\Environmentに保持され、ユーザーのログオン時にロードされます。

  • デフォルトでは、システムはAUTOEXEC.NTファイルでsetコマンドも探します。

MS-DOS、16ビットWindows、Windows 9xシリーズ

  • MS-DOSプロンプト(command.com)では、WinNTの場合と同様にset name=valueを使用します。

    同様に、setを対話的に実行しても、その1つのcommand.comインスタンスとそれから起動される新しいプロセスにのみ影響します。

  • 永続的な変更を加えるには、C:\AUTOEXEC.BATに適切なset行を追加または編集してから再起動します。

    • Windows 9xの場合、再起動を回避するための回避策:MS-DOSプロンプトウィンドウを開き、適切な変数を設定し、既存のExplorerプロセスを閉じます(スタート→シャットダウン→Ctrl + Shiftを押しながらキャンセル)をクリックし、MS-DOSプロンプトウィンドウからExplorer.exeを実行します。

VMS

(抵抗できなかった)

DCLには「パス」の概念はありませんが、さまざまなシンボルおよびコマンド定義をSYS$LOGIN:LOGIN.COMに入れることができます。

64
grawity

bashシェルPATHグローバル(非終端)環境変数については、私のUbuntu VMインストールで使われている規約に従います - 他のシェルは異なるでしょう:

警告:シェルの起動シーケンス全体、.bashrc.profileなどのファイルはどの順序で供給されますか?新しく定義された変数、エイリアスなどを見るために再ログインする必要があるのはいつですか?ログイン、対話型、および非対話型のシェル - 私はcron?を使用しますが、なぜ. ~/.bashrcを実行すると、私の愚かなPATH変数がますます長くなるのでしょうか。私が私のPATH変数を考えているときに頭に浮かぶ重要な質問です。

実際、私はUbuntuとcygwinのスケルトンファイルからアイデアを取り入れて、bashスタートアップファイルセット全体を完全に書き直しました。

  1. PATHおよび他のグローバル環境変数(つまりLD_LIBRARY_PATH)変数を.profileにエクスポートします。
  2. ~/.profileのロジックを使用して、$HOME/.bashrcが存在する場合はそれを読み込みます。
  3. 対話式実行のテストで~/.bashrcの実行をフェンスし、そうでなければ終了します。
  4. 対話モードでのみ実行するように保護されている~/.bashrcの部分に、すべての別名、shopt、プロンプト設定、履歴管理、端末設定、関数定義など(対話関連設定)を入れます。
  5. .profile.bashrcによる制御パスが期待通りに機能するかどうかは、それらの存在によって決定されるので、他のbash起動ファイルを取り除きます。つまり、他に特別な要件がない限り、~/.bash_profile~/.bash_loginを削除してください。
  6. Bash Promptを使用していて、デフォルトの設定を更新する必要があるときは、~/.bashrcファイルを編集してから、. ~/.bashrcを使用してその変更を現在のシェルで取得します。
  7. PATHのような環境変数を変更するときは、自分の~/.profileを修正してソースにする必要があります。
  8. 私は、fink、port、およびbrewの特定の設定への呼び出しを.profileに入れました。

それがこのトピックに関する私の2セントです。

9
Billy McCloskey

Q:環境変数とは何ですか?

A:環境変数は、どのプログラミング言語の変数にも似ています。 WindowsまたはUnixシステムの場合、それらはプログラムやタスクが必要なOS情報または「環境」情報を取得できるようにさまざまな値を格納しています。例えば:

USERPROFILE:OSファイル内のユーザーディレクトリ。

MAIL:ユーザーのメールがOSファイル内にある場所。

Q:PATH変数とは何ですか?

A:PATH変数は、RUNコマンドとプログラムからの内部呼び出しの両方に対して、コマンドが実行されたときに調べるディレクトリパスを設定します。これにより、プログラムが他の実行可能プロセスを呼び出すためにインストール場所を知る必要がなくなります。

Windows環境システムのPATH変数を調べ、指定された実行可能ファイルの各場所をテストします。したがって、PATH変数に場所を追加すると、実行可能ファイルを直接呼び出すことができます。

これによると ウィキペディアの記事

コマンドをコマンドシェルに入力するか、プログラムを実行するためにプログラムによってシステムコールが行われると、システムは最初に現在の作業ディレクトリを検索し、次にパスを検索して各ディレクトリを左から右に調べます。


Q:PATH変数に場所を追加するにはどうすればいいですか?

A:環境変数PATH変数の変数文字列を編集して、実行可能ファイルの場所を含める必要があります。

これを行うための1つの方法がここで説明されています:

  1. スタートメニューを開き、コンピュータを右クリックします。プロパティを選択します。
  2. システムの詳細設定を選択します。
  3. 「詳細設定」タブで、「環境変数」を選択します。
  4. 編集または新規を選択します。 (PATHの場合は、おそらく編集したいと思うでしょう)。
  5. 場所のパスを追加します。例:C:\wamp\bin\php\php5.5.12;

これが混乱のいくつかを明確にすることを願っています。

7
user945389