You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

bash与source执行含Lua的Shell脚本输出不一致问题排查

问题:Git Bash执行含Lua命令的脚本报错127,移除doskey别名后恢复正常

问题场景与现象

在Win10系统的Git Bash环境中,执行包含Lua命令的Shell脚本bb.sh时出现异常:

  • 直接用bash bb.sh执行:Lua的print语句未执行,返回错误码127
  • 用source bb.sh执行:得到预期输出,且两种执行方式下的$PATH完全一致

脚本bb.sh内容如下:

lua -e 'print "hha"'
echo $?
echo 'aaa' 
echo $?
( echo 'aaa' )
echo $?
echo $PATH

排查信息

执行type -a lua显示,lua已被bash别名为lua53,且系统中存在多个路径的lua可执行文件。

临时解决

移除cmd启动时自动执行的doskey lua=lua53 $*命令后,bash bb.sh执行恢复正常。

原因解析

Git Bash运行在Windows环境时,会读取系统的doskey别名配置,但bash自身的别名机制和doskey不兼容:

  • 当设置了doskey的lua=lua53 $*后,新启动的bash进程(直接执行脚本时会启动新进程)会尝试解析这个doskey别名,但bash无法正确识别doskey的$*参数语法,导致无法定位到正确的lua53可执行文件,从而抛出127错误(命令未找到)。
  • 而用source执行脚本时,是在当前已启动的bash会话中运行,此时bash已经加载了自身的lua别名(也就是type -a lua显示的别名),不受doskey配置影响,因此能正常执行Lua命令。

内容的提问来源于stack exchange,提问作者lawsssscat

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 22:46:04