在任何命令外壳中工作时,通常都必须键入特定路径才能运行可执行程序。例如
start c:/ProgramFiles/Steam.exe
我知道那不是Steam的真实目录,而是任何东西。
但是,有些可执行文件不需要像chrome.exe
那样键入整个目录。我要做的就是在外壳上输入start chrome.exe
,然后弹出一个窗口。我只是想知道为什么会这样,如果在任何情况下chrome都是“特殊的”。
我可能的解释是运行可执行文件时,shell通常会在当前工作目录中查找并查看可执行文件是否存在。如果不是,它将搜索环境变量并查看一个名为PATH
的变量。由于path变量是在一行中混在一起的一堆随机路径,因此它在每个路径中搜索与run调用匹配的可执行文件。但是,当我查看PATH
变量时,我得到了:
%SystemRoot%\system32\WindowsPowerShell\v1.0\;C:\ProgramData\Oracle\Java\javapath;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files\Java\jdk-9\bin;C:\Program Files (x86)\QuickTime\QTSystem\
我没有在其中找到指向chrome.exe
的位置的路径,该位置应为C:/Program Files (x86)/Google/Chrome/Application
有人可以解释一下这个PATH
变量的实际用途吗?
通过通用定义,我知道它在程序需要知道在哪里安装,启动某物等时使用,但是那里只有5条路径,并且我安装了数百个程序,所以我不知道如何会起作用,为什么chrome.exe
会这样?
答案 0 :(得分:0)
您对%PATH%
变量的大部分想法都是正确的。但是,请考虑存在系统环境变量和用户环境变量。
PATH
变量中的路径不是您所说的随机。他们全都有一个目的。它们中的大多数是在软件安装过程中添加的,使您或系统可以轻松地找到可执行文件,这并不像听起来那样容易。例如。您有一个用于32位应用程序的程序文件夹,以及一个用于64位应用程序的文件夹。有%windir%/System32
文件夹,您的用户文件夹和一些手动安装。
此外,操作系统不仅搜索.exe
可执行文件。例如,.bat
文件也由默认命令提示符(cmd
)执行,另一方面,PowerShell具有所谓的配置文件,该配置文件可以记住.bashrc
的一部分,并且可以定义 Aliases 和 functions ,这可能是从bash领域了解的。
要了解为什么执行chrome.exe
的原因,请在PowerShell中键入以下内容:
Get-Command chrome.exe
它将向您显示定义该命令的内容。是exe文件吗?是的,是。