链接

链接

我希望在 Windows 下我的 %PATH% 中有一个可用的可执行文件。问题在于,该工具所在的目录中还有许多其他可执行文件,而我我想要包含在我的 PATH 中,所以我不能只添加整个目录。

在我的 Linux 系统中,我只需将可执行文件符号链接到$HOME/bin$PATH 中的 ,它就会从那里被拾取。但在 Windows 上,创建符号链接仅限于管理员用户,而且微软警告了一些模糊的安全问题,所以我不太愿意尝试。

Windows 相当于什么ln -s $SOME_EXECUTABLE_FILE $HOME/bin/

我看到 Chocolatey 通过生成 shim 可执行文件解决了这个问题,但是他们的shimgen 工具是专有的,仅授权作为其包管理器的一部分使用。


编辑:像我在 Linux 系统上那样简单地对可执行文件进行符号链接似乎会破坏 DLL 加载。当我尝试将可执行文件符号链接到 Windows 上的其他文件夹时,会发生以下情况:

C:\tmp>mklink ruby.exe C:\tools\msys64\mingw64\bin\ruby.exe
symbolic link created for ruby.exe <<===>> C:\tools\msys64\mingw64\bin\ruby.exe

C:\tmp>.\ruby.exe
### error dialog about not finding libgmp-10.dll and libssp-0.dll

丢失的 DLL 文件位于bin目录中。显然,如果通过符号链接调用可执行文件,Windows 不会查找可执行文件的“真实”目录。当我通过其完整路径调用它时,它会在同一个 CMD 会话中工作:

C:\tmp>C:\tools\msys64\mingw64\bin\ruby.exe
puts 'Hello world'
^D
Hello world

答案1

您正在寻找这个:

mklink <Link path> <Tarket path>

链接

创建目录或文件的符号或硬链接。

句法

mklink [[/d] | [/h] | [/j]] <link> <target>

参数

  • /d- 创建目录符号链接。默认情况下,此命令会创建文件符号链接。
  • /h- 创建硬链接而不是符号链接。
  • /j- 创建目录连接。
  • <link>- 指定正在创建的符号链接的名称。
  • <target>- 指定新符号链接引用的路径(相对或绝对)。
  • /?- 在命令提示符下显示帮助。

相关内容