PATHおよびその他の環境変数とは何ですか?また、どのように設定または使用できますか?


341

についての質問

  • 環境変数の設定
  • その PATH

ここでは非常に一般的であり、ほとんどの場合、答えは互いに非常に似ています。将来的には、このための良いQ / Aがあるといいでしょう。

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

適切な答えには、環境変数の簡単な説明、特にPATHOS にとっての意味、およびそれに応じて環境変数を設定および読み取る方法に関する簡単なガイドラインが含まれます。


2
必要になるたびに手動で行うのにうんざりして、AddToPathとRemoveFromPathのコンテキストメニューエントリをフォルダーに追加するレジストリエントリを作成し、pathed.exeと呼ばれる無料アプリを利用しました。完全なガイドへのリンクは次のとおりです:addictivetips.com/windows-tips / ...フォルダーをPATH変数に追加したり、そこから削除したりすることができます。ファイルを編集したり、変数のフォーマットを乱したりする必要はありません。それが役に立てば幸い。=)
ハルーンQ.ラジャ

1
Windowsには、システムのプロパティを開くためのショートカットがあります。コントロールパネル->システムキーボードのWINキー+一時停止/ブレーク(WIN +ブレーク)。これは非常に有用であり、Win8で新しい環境変数を設定するプロセスを高速化します。これは、現代のUIで複数のウィンドウをクリックする必要があるためです(ええ。現代の場合は、手のひらにサボテンを成長させます)。もちろん、powershellスクリプトを作成するか、setxコマンドを使用して、それについて心配する必要はありません。D
termil0r

Windows 8では、システムおよびユーザー環境変数の変更への最速のナビゲーションは検索の使用です。<kbd> Win </ kbd> + <kbd> W </ kbd>は、すべての設定の検索を表示します。検索envと必要なオプションがリストされます。
FRIdSUN 14

私はそれを開いCMDて入力するsetか、または入力することで、より速く、より明確になると思いPowerShellますGet-Childitem env:
パラドロイド14

パス変数を頻繁に編集している場合(新しいシステムをセットアップするときなど)、デスクトップの[システムのプロパティ]ダイアログへのショートカットを用意すると役立つ場合があります。そのためには、デスクトップを右クリックし、[新しいショートカット]を選択して、systempropertiesadvanced.exeと入力します。次に、リンクをクリックして[システムのプロパティ]ダイアログに移動し、[環境変数]をクリックして、パス設定を含むダイアログに移動します。
ブライアンバーンズ

回答:


334

環境変数とは何ですか?

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

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

LinuxおよびMac OS Xでは、通常、現在のユーザーに関連するすべてbinsbinディレクトリが保持されます。Windowsでは、それが含まれている少なくともC:\WindowsC:\Windows\system32ディレクトリ-あなたができる理由です実行し calc.exeたりnotepad.exe、コマンドラインまたはからファイル名を指定して実行 ]ダイアログではなくfirefox.exe。(FirefoxはにありC:\Program Files\Mozilla Firefoxます。Firefoxを含める方法については、こちらをご覧ください。)

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

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

その他

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

新しい環境変数の作成

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

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

 

GUI

  1. オープンControl Panel » System » Advanced » Environment Variables

  2. control sysdm.cpl,,3[実行]ダイアログ(Win+ R)に入力して[OK] をクリックします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用のもう1つのオープンソースプログラムは、パスエディタです。

コマンドライン

フォーマット

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

%name%

エコー

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

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

セットする

変数を作成/設定するには、次を使用しますset varname=value

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

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

変数を追加/追加するには、次を使用しますset varname=value;%varname%

C:\>set Penguins=C:\Linux

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

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

この方法で設定された環境変数は、それらが設定されているコマンドプロンプトプロセスの期間中に使用でき、変数が設定された後に開始されたプロセスで使用できます。

setx

するために作成/設定変数を恒久的に、使用します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)ので、変数を含む値を引用符で囲むのが最適であることに注意してください。

setxVistaより前のバージョンのWindowsに手動で追加する必要があります。
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以前のシェルへの移植性が必要な場合は、最初の選択肢が望ましいです。

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つのパスが含まれているだけです。たとえば、/ Programs / Mozilla / Calendar / bin。

 

外部リンク:

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


10
Windows Vista以降ではSETX、永続的な変更を行うために使用できます。構文が少し異なります。 SETXWindows Server 2003 Resource Kit以前のバージョンのから追加する必要がありNTます。
パラドロイド

1
@paradroidニース、それを知らなかった(Windowsユーザーではない)。このトピックはコミュニティWikiです。先に進んで、その情報を編集するだけです。
ダニエルベック

2
@JdeBPセクションのタイトルは、次のセクションのコマンドラインインターフェイスとは対照的に、Windowsではシェルと呼ばれるユーザーインターフェイスこれらの値を設定する方法を参照することを目的としています。10時間前にコメントを見る前にこれを編集しました。これがExplorerにのみ適用されるとは誰も言及していません。
ダニエルベック

1
@JdeBPあなたがレジストリに値を設定することについて話したので、あなたがリンクした答えは本当にこの場合には当てはまりません。ダイアログを介した設定は、WM_SETTINGCHANGE私が想像するものをブロードキャストするため、関係者に新しい値を通知します。それがここでそれがどのように適用されるかを尋ねた理由です。太字にすることで意味が変わることはなく、同じ文を繰り返して声を大きくするように理解しやすくなります。また、数時間前にこの投稿を編集して、プロセスが受け取る値が起動時に設定されることを具体的に述べました。
ダニエルベック

3
@JdeBPまた、質問は本質的にかなり基本的なものであることに気付くかもしれません。環境変数の変更がどのように配布されるかの複雑さを注意深く説明することは(真剣に、WM_SETTINGCHANGE?Windows API?これはこの質問の対象者ではありません!) 。
ダニエルベック

64

この投稿はダニエルよりも技術的な観点からのものですが、概念についてはあまり説明していません。


Wikipediaの記事はまた、優れたreferrenceです。

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と、最初の1: 、~/.bash_profile、。~/.bash_login ~/.profileマニュアルページのbash(1)セクションの呼び出し

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

      • zsh:マニュアルページzsh(1)セクションスタートアップ/シャットダウンファイル

      • 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プロセスと、そこから起動される新しいプロセスのみに影響します。

  • 永続的な変更を行うには、コントロールパネル→システム→詳細設定→環境変数を使用します。(ドキュメント

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

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

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

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

  • デフォルトでは、システムsetAUTOEXEC.NTファイル内のコマンドも検索します。

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

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

    同様に、setインタラクティブに実行すると、その1つのcommand.comインスタンスと、そこから起動された新しいプロセスのみが影響を受けます。

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

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

VMS

(抵抗できませんでした。)

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


2
VMSセクションが間違っています。DCLにDCL$PATHは「自動外部コマンド」があります。
JdeBP

9

以下のために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. 保護されてshoptいる部分にすべてのエイリアス、、プロンプト設定、履歴制御、端末設定、関数定義など(対話に関連する設定)を入れて~/.bashrc、対話モードでのみ実行するようにします。
  5. 他のbashスタートアップファイルを削除します。これらのファイルの存在によって、制御パスが期待通り.profile.bashrc機能するかどうかが決まるためです。つまり、別の特別な要件がない限り、~/.bash_profile&を削除し~/.bash_loginます。
  6. bashプロンプトが表示されているときにデフォルトの設定を更新する必要がある場合は、~/.bashrcファイルを編集して. ~/.bashrcから、現在のシェルでこれらの変更を取得するためにファイルをソースします。
  7. のような環境変数を変更するときはPATH、自分の~/.profile; を変更してソースする必要があります。
  8. fink、port、および特定のセットアップへの呼び出しをに入れ.profileます。

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


7

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;

これが混乱の一部を明らかにすることを願っています。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.