Arch系统启动Bash Shell时出现整数表达式预期错误求助
解决Arch启动Bash时的"-bash: [: : integer expression expected"错误
问题定位
错误提示源于整数表达式匹配失败,问题出在~/.bash_profile的这行判断:
if [ -z "${DISPLAY}" ] && [ "${XDG_VTNR}" -eq 1 ]; then exec startx fi
当在非本地TTY环境(比如xrdp远程会话)启动Bash时,XDG_VTNR变量未被设置,为空值。[命令执行-eq整数比较时,空值无法被识别为有效整数,因此抛出错误。
修复方案
修改~/.bash_profile中的条件判断,确保XDG_VTNR变量存在且为有效整数后再进行比较,以下两种写法任选其一:
写法一:增加变量非空检查
# ~/.bash_profile [[ -f ~/.bashrc ]] && . ~/.bashrc if [ -z "${DISPLAY}" ] && [ -n "${XDG_VTNR}" ] && [ "${XDG_VTNR}" -eq 1 ]; then exec startx fi
写法二:用默认值规避空值
通过参数扩展给XDG_VTNR设置默认值0,即使变量为空也能完成整数比较:
# ~/.bash_profile [[ -f ~/.bashrc ]] && . ~/.bashrc if [[ -z "${DISPLAY}" && "${XDG_VTNR:-0}" -eq 1 ]]; then exec startx fi
验证修改
保存修改后,重启Bash或执行source ~/.bash_profile,错误提示应不再出现。
内容的提问来源于stack exchange,提问作者gatorpatch
相关产品推荐
相关产品推荐

