【问题标题】:executables and the path variable可执行文件和路径变量
【发布时间】:2019-02-11 07:03:08
【问题描述】:

在任何命令外壳中工作时,通常必须输入特定路径才能运行可执行程序。比如

start c:/ProgramFiles/Steam.exe

我知道那不是 steam 的真正目录,但无论如何。

但是,有些可执行文件我不必为 chrome.exe 输入整个目录。我所要做的就是在我的 shell 中输入 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 会这样?

【问题讨论】:

  • 我可能试图回答这个问题并发现您的问题设计得很好,但是第二次阅读它,我认为它可能离题并且更适合超级用户。这只是我的想法。让我们看看其他人对此是怎么说的。

标签: powershell google-chrome environment-variables


【解决方案1】:

您对%PATH% 变量的大部分想法都是正确的。但是,考虑到有系统环境变量用户环境变量

PATH 变量中的路径不像您说的那样随机。它们都有一个目的。它们中的大多数是在软件安装过程中添加的,使您或系统可以轻松找到可执行文件,这并不像听起来那么容易。例如。您有一个用于 32 位应用程序的程序文件夹和一个用于 64 位应用程序的文件夹。有%windir%/System32 文件夹、您的用户文件夹和一些手动安装。

此外,操作系统不仅搜索.exe 可执行文件。 .bat 文件,例如也由默认命令提示符(cmd)执行,另一方面,PowerShell 有一个所谓的配置文件,它记住了.bashrc 的一部分,并且可以定义 别名 和 functions,可能从 bash 世界中知道。

要找出执行 chrome.exe 的原因,请在 PowerShell 中键入以下内容:

Get-Command chrome.exe

它会告诉你,定义那个命令。是exe文件吗?是的。

【讨论】:

  • 我输入了 get-command chrome.exe,它说 chrome.exe 不是可识别的 cmdlet,也不是命令。此外,由于 PATH 变量用于定位可执行文件,我有数百个可执行文件,但只有 5 个路径。这是为什么呢?
  • Get-Command chrome 是怎么回事。我写了chrome.exe,因为您告诉过这就是您要输入的内容,但通常情况下,我只会写chrome。我的意思是:你不能用 chrome.exe 执行 chrome,而没有 PowerShell 能够解决它。
  • 我猜不只是 5 条路径。但是,至少在system32 中有数百 个可执行文件。
猜你喜欢
  • 1970-01-01
  • 2014-11-24
  • 1970-01-01
  • 1970-01-01
  • 2019-03-15
  • 2014-09-12
  • 1970-01-01
  • 2012-08-18
  • 1970-01-01
相关资源
最近更新 更多