我正在尝试在Windows下执行.sh脚本。我安装了Git,它允许我执行.sh文件。但是,我似乎无法传递任何参数而没有使用“sh”前缀执行:
我的.sh文件:
echo "Test" $1
如果我执行它:
> sh test.sh 123
我得到了
测试123
但是,如果我只是将其作为
执行> test.sh 123
我得到了
测试
我知道可以使用参数执行带有参数的.sh脚本而不用“sh”作为前缀,因为通过某些配置组合,我能够以某种方式在旧计算机上执行此操作。有关如何实现这一点的任何猜测?
答案 0 :(得分:0)
正如@HarryJohnston在评论中解释的那样,解决这个问题的第一步是找出assoc
和ftype
关联。 assoc
很可能会返回.sh=sh_auto_file
,而在我的情况下,ftype
会返回sh_auto_file="C:\Program Files\Git\git-bash.exe" --no-cd "%L" %*
。问题的一部分类似于发生的事件in this issue - Windows没有将参数传递给.sh文件。要解决此问题,sh_auto_file
关联需要以/ "%1" %*
作为其中的一部分结束。但是,问题的另一部分是(至少在我的情况下在Windows 10上),注册表中可能有多个地方有错误的记录。最后,我不得不手动将注册表中的2-3个条目更改为"C:\Program Files (x86)\Git\bin\sh.exe" "%1" %*
,以使其最终有效。要查找这些地点,请搜索.sh
和sh_auto_file
并相应地替换。
奖励:使.sh文件执行而无需编写" .sh"最后,在环境变量中将.SH添加到pathext
。