it-swarm-ja.com

一部のプログラムがPath値を必要とし、他の一部がWindowsに必要ないのはなぜですか?

なぜWindows7/8/10に Composer をインストールする場合、または GNU Tar のようなUNIXに適したプログラムをインストールする場合、パス値を設定する必要があります。 t、他のプログラムでは使用できませんか?

7
user529857

私はMicrosoftWindowsでこれに答えました。ここにもLinuxタグがあるようです。まあ、同じ概念が適用されます。 (Linuxに関するその他の注意事項は、最後の段落に記載されています。)

プログラムがPATH環境変数で指定されたディレクトリにない場合は、プログラムを使用できます。ただし、少し便利ではありません。

たとえば、7-Zipはパスに含まれていなくても、よく実行します。したがって、コマンドラインを「7z」で開始する代わりに、コマンドラインを次のように開始します。
"C:\Program Files\7-Zip\7z.exe"

私が実際に入力するのは通常、次のようなものなので、見た目ほど悪くはありません。
C:\ tab プロ tabtabtab

(タイプミスがある場合に発生する可能性のあるビープ音を聞き、最後の拡張後に tab キー、コマンドラインの正確さもチェックして、希望どおりに実行されることを確認します。)

プログラムは、コマンドラインでプログラムをどのように参照したかを確認したり、現在のディレクトリを確認したりできます。したがって、プログラムは、PATHにあるかどうかに基づいて異なる動作をする可能性があります。ただし、それはありそうにありません。

別の解決策:プログラムがインストールされているディレクトリも含めるようにPATH環境変数を調整します。

別の代替ソリューション:実行可能ファイルを、すでにPATHにあるディレクトリに配置するだけです。 (ただし、一部のプログラムは、DLLファイルなどのファイルをそのようなディレクトリにコピーする必要がある場合があるため、より複雑です。したがって、このアプローチは通常、必要なプログラムにはお勧めしません。 「インストールプログラム」を実行することによる「インストール」。ただし、多数のサポートファイルを必要とせずに実行できる単純な実行可能ファイルの場合、これは多くの場合実行可能です。)

Linuxでは、いくつかの小さな違いがあります。「echo ${PATH}」の代わりに「echo %PATH%」を使用し、バックスラッシュの代わりにスラッシュを使用し、7zaの代わりに7-Zipに7z.exeを使用します。パスを調整したい場合は、exportなどの別のコマンドを使用できますが、実際には使用するシェルによって異なります。)

2
TOOGAM

一部のプログラムがPath値を必要とし、他の一部がWindowsに必要ないのはなぜですか?

なぜWindows7/8/10にComposer、またはGNU Tar)のようなUNIXに適したプログラムをインストールするとき、パス値を設定する必要があります。そうしないと、他のプログラムで使用できなくなりますか?

PATHは、Unixライクなオペレーティングシステム、DOS、OS/2、およびMicrosoft Windowsの環境変数であり、実行可能プログラムが配置されているディレクトリのセットを指定します。一般に、実行中の各プロセスまたはユーザーセッションには、独自のPATH設定があります。

DOS、OS/2、およびWindows

一部のプログラムは、インストール中にPATH変数のコンテンツの前にディレクトリを追加して、検索プロセスを高速化したり、OSコマンドを上書きしたりする場合があります。 DOSの時代には、PATH {program directory};%PATH%またはSET PATH={program directory};%PATH%行をAUTOEXEC.BATに追加するのが通例でした。

コマンドシェルにコマンドを入力するか、プログラムによってシステムコールを実行してプログラムを実行すると、システムは最初に現在の作業ディレクトリを検索し、次にパスを検索して、各ディレクトリを左から右に調べ、実行可能ファイル名を探します。指定されたコマンド名と一致します。実行可能プログラムのファイル拡張子はEXEまたはCOMで、バッチスクリプトの拡張子はBATまたはCMDです。他の実行可能なファイル名拡張子もシステムに登録できます。

UnixおよびUnixライク

ユーザーがコマンド名を指定するか、プログラムからexec呼び出しを行うと、システムは$PATHを検索し、リスト内の各ディレクトリを左から右に調べて、コマンド名に一致するファイル名を探します。見つかったプログラムは、コマンドシェルまたはコマンドを発行したプログラムの子プロセスとして実行されます。

出典:PATH_(変数)

2
Pimp Juice IT

Windowsでは、アプリケーションはレジストリの{HKCU|HKLM}\Software\Microsoft\Windows\CurrentVersion\App Pathsの下にパスを登録できます。 Windowsは、PATH環境変数を肥大化させることなく、それぞれの.exeファイルの場所を記憶します。

から アプリケーション登録

ユーザーごとにインストールされるアプリケーションは、HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\AppPathsに登録できます。コンピューターのすべてのユーザー用にインストールされたアプリケーションは、HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\AppPathsに登録できます。

アプリパスの下にあるエントリは、主に次の目的で使用されます。

  • アプリケーションの実行可能ファイル名をそのファイルの完全修飾パスにマップします。
  • アプリケーションごと、プロセスごとに、PATH環境変数に情報をプリペンドします。

たとえば、デフォルトのWindowsインストールにはレジストリエントリがあります。

HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\WORDPAD.EXE
(Default)="%ProgramFiles%\Windows NT\Accessories\WORDPAD.EXE"

これにより、start wordpadがPATHにない場合でも、wordpad(またはcmdプロンプトで%ProgramFiles%\Windows NT\Accessories)を入力するだけで、ワードパッドを開始/実行から開始できます。

2
dxiv