执行. ./run.sh提示'.'不是内部或外部命令的原因及解决方法
关于
. ./run.sh指令报错的解答 指令中.的具体含义
.是Shell环境的内置命令,等价于source命令,作用是在当前终端的Shell进程内直接执行指定的脚本文件,不会启动独立的子Shell进程。
指令里两个.的作用完全不同:第一个是命令本身,后面跟的./run.sh是传给该命令的参数,指代「当前工作目录下的run.sh脚本文件」,两者之间必须有空格分隔。
是否属于bash指令
它不是bash独有的指令,是所有兼容POSIX标准的Shell(包括sh、bash、zsh等常见类Unix Shell)都原生支持的内置命令,不存在独立的外部可执行文件。
你遇到报错的核心原因是当前使用的运行环境是Windows系统的CMD或PowerShell,这两个Windows原生终端不兼容POSIX标准,根本没有这个内置命令,所以会提示无法识别.。
是否和git相关
该指令和Git没有任何关联。Git是版本控制工具,这条指令属于Shell脚本执行类操作,和Git的功能、命令没有关系。
报错解决方法
根据你的运行环境选对应操作即可:
- Windows环境:
- 优先打开Git安装时自带的Git Bash终端,cd切换到asteroid项目对应recipes的目录后,再执行
. ./run.sh即可 - 也可以使用WSL(Windows Linux子系统),进入WSL终端后切到对应项目目录执行命令
- 注意不要把命令写错成
../run.sh,这种写法指代上级目录下的run.sh,和原命令语义完全不同
- 优先打开Git安装时自带的Git Bash终端,cd切换到asteroid项目对应recipes的目录后,再执行
- macOS/Linux环境:
- 确认当前使用的是bash/zsh/sh类Shell终端
- 先给脚本添加执行权限:
chmod +x run.sh - 再执行原命令即可,也可以换成可读性更强的等价写法
source ./run.sh,执行效果完全一致
补充说明:官方文档要求用
./source执行run.sh,是因为这类项目的run.sh通常包含环境变量配置、虚拟环境激活等操作,如果直接用./run.sh启动子Shell执行,脚本运行结束后子Shell自动退出,配置的环境变量不会在当前终端生效,会导致后续操作失败。
内容的提问来源于stack exchange,提问作者cchoi1022
相关产品推荐
相关产品推荐

