に関する質問
PATH
name__ここでは非常に一般的であり、ほとんどの場合、答えは互いに非常によく似ています。将来的には、これに対する質の高いQ/Aがあればいいでしょう。
実行可能ファイルPATH
name__のような環境変数とは何ですか?また、主要なオペレーティングシステムでそれらを変更して使用するにはどうすればよいですか?
良い答えには、環境変数、特にPATH
name__がOSにとってどのような意味を持つのかについての簡単な説明と、それに応じてそれらを設定して読み取る方法に関する簡単なガイドラインが含まれます。
環境変数は、オペレーティングシステムやユーザーセッションなど、現在の環境に関連する値を保持します。
最もよく知られているものの1つは、Windows、Linux、およびMac OS XではPATH
と呼ばれています。これは、コマンド上でファイルへのパス全体を知らずに入力せずに起動できるマシン上の実行可能プログラム*が置かれているディレクトリを指定します。ライン。 (またはWindowsでは、スタートメニューのRunダイアログまたは +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
(.exe
canは省略可能)と入力すると、Windows Calculatorが起動します。
* .exe
を編集することで%PATHEXT%
以外のファイル拡張子のサポートを追加できます。
他の変数は、どの種類の端末が使用されているか(Linux/Mac OS XではTERM
)、またはWindowsではWindowsフォルダがある場所(例えば%WINDIR%
はC:\Windows
)をプログラムに指示することがあります。
Windows、Linux、およびUnixでは、新しい環境変数を作成することができ、その値は起動時にすべてのプログラムで使用可能になります。
これは、複数のマシンにインストールまたはデプロイされ、それらのマシンに固有の値を参照する必要があるスクリプトまたはプログラムを作成するときに使用できます。プログラム固有の構成設定を使用しても同様の効果が得られますが、複数のプログラムが同じ値にアクセスする必要がある場合は、環境変数を使用してこれを行う方が簡単です。
Control Panel » System » Advanced » Environment Variables
を開きます。
[ファイル名を指定して実行]ダイアログにcontrol sysdm.cpl,,3
を入力します(+R)をクリックしてEnvironment Variables
をクリックします。
ユーザー変数を編集するには、次のように入力することもできます。
%windir%\System32\rundll32.exe sysdm.cpl,EditEnvironmentVariables
ファイル名を指定して実行ダイアログで。
(マイ)コンピュータを右クリックしてプロパティをクリックするか、単にを押します。 +Break。
Advanced » Environment Variables
をクリックします。Advanced system settings » Environment Variables
をクリックしてください。同じ場所にたどり着くには、[スタート]メニュー/ [画面]検索ボックスに「環境変数」と入力するなど、さまざまな方法があります。
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
このように設定された環境変数は、それらが設定されているコマンドプロンプトプロセスの残りの期間に使用可能であり、変数が設定された後に開始されたプロセスに使用可能です。
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に組み込まれています。いくつかの例は次のとおりです。%WINDIR%
、%SystemRoot%
、%USERPROFILE%
、および%APPDATA%
。 Windowsのほとんどの名前と同様に、これらは大文字と小文字を区別しません。
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
この記事はDanielのものよりも技術的な観点からのものですが、それほど概念を説明していません。
ウィキペディアの記事 も参考になります。
ほとんどのコマンドラインシェルでは、一時的な環境変数は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
を使います。そのウィンドウの環境変数を変更するには、コマンドプロンプト(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プロンプト(command.com
)では、WinNTの場合と同様にset name=value
を使用します。
同様に、set
を対話的に実行しても、その1つのcommand.com
インスタンスとそれから起動される新しいプロセスにのみ影響します。
永続的な変更を加えるには、C:\AUTOEXEC.BAT
に適切なset
行を追加または編集してから再起動します。
Explorer.exe
を実行します。(抵抗できなかった)
DCLには「パス」の概念はありませんが、さまざまなシンボルおよびコマンド定義をSYS$LOGIN:LOGIN.COM
に入れることができます。
bash
シェルPATH
グローバル(非終端)環境変数については、私のUbuntu VMインストールで使われている規約に従います - 他のシェルは異なるでしょう:
警告:シェルの起動シーケンス全体、.bashrc
、.profile
などのファイルはどの順序で供給されますか?新しく定義された変数、エイリアスなどを見るために再ログインする必要があるのはいつですか?ログイン、対話型、および非対話型のシェル - 私はcron
?を使用しますが、なぜ. ~/.bashrc
を実行すると、私の愚かなPATH
変数がますます長くなるのでしょうか。私が私のPATH
変数を考えているときに頭に浮かぶ重要な質問です。
実際、私はUbuntuとcygwinのスケルトンファイルからアイデアを取り入れて、bashスタートアップファイルセット全体を完全に書き直しました。
PATH
および他のグローバル環境変数(つまりLD_LIBRARY_PATH
)変数を.profile
にエクスポートします。~/.profile
のロジックを使用して、$HOME/.bashrc
が存在する場合はそれを読み込みます。~/.bashrc
の実行をフェンスし、そうでなければ終了します。~/.bashrc
の部分に、すべての別名、shopt
、プロンプト設定、履歴管理、端末設定、関数定義など(対話関連設定)を入れます。.profile
と.bashrc
による制御パスが期待通りに機能するかどうかは、それらの存在によって決定されるので、他のbash起動ファイルを取り除きます。つまり、他に特別な要件がない限り、~/.bash_profile
&~/.bash_login
を削除してください。~/.bashrc
ファイルを編集してから、. ~/.bashrc
を使用してその変更を現在のシェルで取得します。PATH
のような環境変数を変更するときは、自分の~/.profile
を修正してソースにする必要があります。.profile
に入れました。それがこのトピックに関する私の2セントです。
Q:環境変数とは何ですか?
A:環境変数は、どのプログラミング言語の変数にも似ています。 WindowsまたはUnixシステムの場合、それらはプログラムやタスクが必要なOS情報または「環境」情報を取得できるようにさまざまな値を格納しています。例えば:
USERPROFILE:OSファイル内のユーザーディレクトリ。
MAIL:ユーザーのメールがOSファイル内にある場所。
Q:PATH変数とは何ですか?
A:PATH変数は、RUNコマンドとプログラムからの内部呼び出しの両方に対して、コマンドが実行されたときに調べるディレクトリパスを設定します。これにより、プログラムが他の実行可能プロセスを呼び出すためにインストール場所を知る必要がなくなります。
Windows環境システムのPATH変数を調べ、指定された実行可能ファイルの各場所をテストします。したがって、PATH変数に場所を追加すると、実行可能ファイルを直接呼び出すことができます。
これによると ウィキペディアの記事 :
コマンドをコマンドシェルに入力するか、プログラムを実行するためにプログラムによってシステムコールが行われると、システムは最初に現在の作業ディレクトリを検索し、次にパスを検索して各ディレクトリを左から右に調べます。
Q:PATH変数に場所を追加するにはどうすればいいですか?
A:環境変数PATH変数の変数文字列を編集して、実行可能ファイルの場所を含める必要があります。
これを行うための1つの方法がここで説明されています:
C:\wamp\bin\php\php5.5.12;
これが混乱のいくつかを明確にすることを願っています。