我正在尝试在 Windows 下执行 .sh 脚本。我安装了 Git,它允许我执行 .sh 文件。但是,如果不使用“sh”作为执行前缀,我似乎无法传递任何参数:
我的 .sh 文件:
echo "Test" $1
如果我用以下命令执行它:
> sh test.sh 123
I get
Test 123
但是,如果我只是执行它
> test.sh 123
I get
Test
我知道可以使用参数执行 .sh 脚本,并且无需在它们前面加上“sh”前缀,因为通过某种配置组合,我能够以某种方式在我的旧计算机上执行此操作。关于如何实现这一点有任何猜测吗?
正如 @HarryJohnston 在评论中所解释的,解决这个问题的第一步是弄清楚assoc
and ftype
协会。assoc
很可能会回来.sh=sh_auto_file
,而就我而言,ftype
回sh_auto_file="C:\Program Files\Git\git-bash.exe" --no-cd "%L" %*
。问题的一部分与正在发生的事情相似在这个问题上 https://stackoverflow.com/questions/2640971/windows-is-not-passing-command-line-arguments-to-python-programs-executed-from-t- Windows 未将参数传递给 .sh 文件。为了解决这个问题,sh_auto_file
关联需要以/结束"%1" %*
显然是其中的一部分。然而,问题的另一部分是(至少在我的情况下是 Windows 10),注册表中可能有多个位置有错误的记录。最后我不得不手动更改注册表中的 2-3 个条目"C:\Program Files (x86)\Git\bin\sh.exe" "%1" %*
为了让它最终发挥作用。要查找这些地点,请搜索.sh
and sh_auto_file
并进行相应的更换。
额外奖励:要使 .sh 文件执行而无需在末尾写入“.sh”,请将 .SH 添加到pathext
在环境变量中。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)