我希望在 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>
- 指定新符号链接引用的路径(相对或绝对)。/?
- 在命令提示符下显示帮助。