如何在Windows 7上使用Cygwin创建一个符号链接
问题的出现的原因是在使用Cygwin的Windows 7中,尝试使用"ln -s"创建符号链接时,可能会遇到"bash: mklink: command not found"的错误。为了解决这个问题,可以尝试使用"mklink"命令代替"ln -s"命令。Tony O'Hagan在Stack Overflow的一个回答中建议使用"mklink"命令。此外,还可以在akudo.codes/2018/12/10/mklink-command-in-windows-ubuntu-wsl找到一个脚本,可以简化操作。
问题的原因是在Windows 7上使用Cygwin创建符号链接时遇到困难。解决方法是定义一个名为CYGWIN的环境变量,并将其值设置为"winsymlinks:nativestrict"。此外,还需要以管理员权限运行Cygwin。
根据Cygwin文档,如果将CYGWIN设置为"winsymlinks:native"或"winsymlinks:nativestrict",Cygwin将在支持的文件系统和操作系统版本上创建本机Windows符号链接。"winsymlinks:native"和"winsymlinks:nativestrict"之间的区别在于,如果文件系统支持本机符号链接,但Cygwin由于某种原因无法创建本机符号链接,那么在使用"winsymlinks:native"时,它将退回到创建Cygwin默认符号链接,而使用"winsymlinks:nativestrict"时,symlink(2)系统调用会立即失败。
另外,还需要确保以管理员权限运行Cygwin。可以通过右键单击快捷方式并选择以管理员身份运行,或者设置mintty快捷方式属性中的高级选项卡中的"以管理员身份运行"。
在Windows 8上,将环境变量CYGWIN设置为"winsymlinks:nativestrict"的方法适用。可以参考其他回答中提供的一些细节。
建议参考自己在stackoverflow上的问题和回答,链接如下:
http://stackoverflow.com/questions/18654162
使用CYGWIN=winsymlinks:native是错误的,因为它会导致许多不同的工作流程出现问题。如果可以接受"回退到创建Cygwin默认符号链接",那么为什么还要尝试创建本机符号链接呢?如果有人需要"native",那么他们就需要"native"。唯一正确的选项是"CYGWIN=winsymlinks:nativestrict"!