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

Ubuntu 22.04中两种export执行方式为何结果不同?

问题分析与解决

直接在shell执行export WORKSPACE=$PWD和source export.txt的核心差异,大概率出在export.txt文件的格式问题上,具体原因和解决方法如下:

两种方式的本质区别

  • 直接执行export WORKSPACE=$PWD:命令在当前shell进程中实时执行,$PWD会被解析为当前shell的工作目录,变量WORKSPACE被正确导出到当前shell的环境变量池里,后续source buildsetup.sh时,脚本会直接继承当前shell的环境变量,自然能正常读取WORKSPACE。
  • source export.txt:本质是让当前shell执行export.txt里的每一行命令,但如果export.txt的格式有问题(最常见的是Windows风格的CRLF换行符),bash会把行尾的\r字符当成变量名的一部分,实际创建的是WORKSPACE\r这个变量(而非预期的WORKSPACE)。当buildsetup.sh尝试读取WORKSPACE时,自然会提示变量未定义。

验证与解决方法

  1. 检查文件格式
    执行cat -A export.txt查看文件内容,如果每行结尾显示^M$,就说明是Windows换行符导致的问题(正常Unix文件结尾是$)。
  2. 转换文件格式
    • 安装并使用dos2unix工具:
      sudo apt install dos2unix
      dos2unix export.txt
      
    • 或者用sed命令手动去除行尾的\r:
      sed -i 's/\r$//' export.txt
      
  3. 重新source测试
    转换完成后,再执行source export.txt,接着运行echo $WORKSPACE确认变量是否正常输出,之后再执行source buildsetup.sh就能正常工作了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 00:44:06