为什么 Windows 中没有 /usr/bin?

为什么 Windows 中没有 /usr/bin?

我是一名 Linux 用户,在 Windows 上花了一些时间,我试图理解一些 Windows 范例,而不是与它们作斗争。我注意到,以传统方式安装的每个程序都会将可执行文件添加到

C:\Program Files

然后向桌面/开始菜单添加包含完整路径的快捷方式。但是,没有包含指向该软件的链接的公共目录,即 C:\bin\bar.exe链接到

C:\Program Files\foo\bar.exe

因此,安装应用程序后,使用该应用程序的唯一方法是通过菜单或导航到文件系统中的可执行文件。不能简单地Win-R打开运行对话框,然后键入bar或 ,bar.exe 就像使用notepad或一样mspaint。我意识到 Windows 8 对此进行了改进,它原本很糟糕的开始屏幕确实支持键入应用程序的名称,但这同样取决于应用程序是否已注册。

递归添加到 Windows 路径会造成任何危害吗C:\Program Files?我确实意识到会有名称冲突(即 uninstall.exe),但可能还有其他问题吗?

答案1

通常不会有任何问题。但是,您需要注意两件事:

  • 避免名称冲突。特别是,确保标准路径组件(如C:\windowsetc.)位于首位,这样路径中就不会隐藏任何系统实用程序。
  • 变量PATH不得超过 8191 个字符。因此,如果您要添加许多程序文件夹,则可能需要进行挑选。如果您假设每个程序的平均路径长度为 50 个字符,则 PATH 中大约有 160 个程序的空间。

默认情况下不这样做的原因可能只是因为命令行在 Windows 上很少使用,因此从未迫切需要将所有内容都放在路径中。大多数需要调用其他程序的程序都已适应了这一点,并使用完整路径进行调用。

最后,如果你想在命令行上工作,比如在 Linux 上,我建议你安装赛格威。它在 Windows 上提供类似 Linux 的环境,并允许您在命令行上工作。它还维护自己的PATH变量,您可以自定义它而不会影响其他 Windows 应用程序。

答案2

答案取决于你谈论的程序类型。如果你谈论的是使用共享库 (DLL) 的程序:

C:\Program Files

是它们的正确位置。您不能将这些程序的文件放在同一个文件夹中,因为它们很可能有名称冲突。如果您谈论的是使用静态库(无 DLL)的程序:

C:\ProgramData\Bin

是他们的正确位置。这类似于:

/usr/local/bin

在 Linux 上。此目录可通过文件夹变量

ProgramData=C:\ProgramData

如果您需要将带有共享库的程序放到您的路径上,您可以对它们进行符号链接:

mklink C:\ProgramData\Bin\alfa.exe "C:\Program Files\Alfa\alfa.exe"

相关内容