在 Linux 上,在安装某些应用程序期间,通常会创建指向其可执行文件的符号链接,以便/usr/bin
它们位于系统PATH
变量中。
另一方面,在 Windows 上,大多数应用程序会PATH
在安装过程中将其自己的安装路径连接到环境变量,这会导致一些不属于该问题范围的问题。
我认为文件夹C:\Windows\System32
的作用与有点类似/usr/bin
,因为它们都是两个系统中标准变量的一部分PATH
,那么为什么将可执行文件符号链接到不是一种常见的做法呢C:\Windows\System32
?
答案1
因为PATH
环境变量比符号链接功能早了二十年。Linux 中看到的符号链接的等效项于 2006 年随 Windows Vista 引入。该PATH
变量自 1986 年起就已存在。
要从 20 年前的方法转向新方法,开发人员需要一个非常好的理由这超过了创建符号链接的缺点System32
:
- 这样做需要管理权限。
- 必须为每个 .exe 文件创建一个符号链接。
- 安装程序和卸载程序必须创建和销毁它们。如果开发人员更改了 .exe 文件的名称,则必须编写例程来检查旧的符号链接并更新它们。
- 考虑到以上所有情况,如果两个应用程序的 .exe 文件名称相似,那么除了“DLL 地狱”,我们还会遇到“符号链接地狱”。一个地狱还不够吗?
- 结果始终是针对每台机器的(而不是针对每个用户或每个进程的)。
同时:
- 无论如何,没有多少应用程序使用该
PATH
变量。大多数应用程序都是 GUI 应用程序,它们的快捷方式安装到“开始”菜单中,并且是它们的主要执行途径。 - 变量
PATH
可以根据每台机器、每个用户甚至每个进程进行自定义。事实上,一些应用程序(如 Visual Studio)已经PATH
为该实例定制了带有自定义每个进程变量的命令提示符。
答案2
这个问题很广泛,我不确定它是否会生存下来,但答案很明显,它System32
与完全不同/usr/bin
。你说它们扮演着相似的角色,但这并不意味着事实如此。它们都是系统路径的一部分,这一事实本身并不意味着它们具有相似的角色。
如果有的话,System32
更相似/sbin
,这也是 Linux 上默认系统路径的一部分。但是,由于这些是非常不同的操作系统,因此这种比较远非完美。
将符号链接放入一般用户安装的程序中是一种常见的做法吗/sbin
?