如何在GitHub Actions的Linux虚拟机中更新PATH环境变量
我在GitHub CI的Linux虚拟机里尝试更新PATH环境变量,先后用了以下两条命令:
export PATH="${PATH}:$ANDROID_SDK_ROOT/cmdline-tools/cmdline-tools/bin"export PATH=$ANDROID_SDK_ROOT/cmdline-tools/cmdline-tools/bin:$PATH
但都没生效,执行echo $PATH查看结果,输出如下:
/home/runner/.local/bin
/opt/pipx_bin
/home/runner/.cargo/bin
/home/runner/.config/composer/vendor/bin
/usr/local/.ghcup/bin
/home/runner/.dotnet/tools
/snap/bin
/usr/local/sbin
/usr/local/bin
/usr/sbin
/usr/bin
/sbin
/bin
/usr/games
/usr/local/games
/snap/bin
预期PATH里应该包含/usr/lib/android-sdk/cmdline-tools/cmdline-tools/bin这个路径。
排查方向与解决方法
1. 先确认ANDROID_SDK_ROOT变量是否有效
GitHub CI里这个变量不一定默认正确设置,先在CI步骤里加一句echo $ANDROID_SDK_ROOT,如果输出为空,说明变量没定义,直接用实际路径替换即可:
export PATH="/usr/lib/android-sdk/cmdline-tools/cmdline-tools/bin:$PATH"
要是不确定实际路径,用查找命令定位:
find / -name "cmdline-tools" 2>/dev/null
2. 解决CI步骤的环境隔离问题
GitHub CI的每个步骤都是独立的shell环境,单步骤里export的变量不会带到下一个步骤。要让PATH全局生效,得把变量写入GitHub的环境变量文件:
echo "PATH=/usr/lib/android-sdk/cmdline-tools/cmdline-tools/bin:$PATH" >> $GITHUB_ENV
这样后续所有步骤的PATH都会包含这个路径。
3. 检查路径层级是否正确
你写的路径里重复了cmdline-tools,实际SDK目录结构可能是$ANDROID_SDK_ROOT/cmdline-tools/latest/bin,先查看目录结构确认:
ls -la $ANDROID_SDK_ROOT/cmdline-tools/
如果确实是latest目录,就把命令改成:
export PATH="$ANDROID_SDK_ROOT/cmdline-tools/latest/bin:$PATH"
内容的提问来源于stack exchange,提问作者Maifee Ul Asad

