OpenFOAM 9创建求解器提示$WM_OPTIONS未设置的问题求助
问题根源
你遇到的报错本质是sudo执行时的环境变量隔离机制导致的:默认情况下sudo会重置执行环境的环境变量,你在普通用户.bashrc中配置的所有OpenFOAM相关WM_*变量,在sudo启动的root执行环境中并不会被继承,因此哪怕当前用户执行env | grep WM能看到WM_OPTIONS,用sudo执行命令时程序仍然读取不到该变量。
解决方案
方案1(最推荐):在用户目录下开发自定义求解器
OpenFOAM原生设计不建议直接修改/opt下的系统级安装目录,自定义求解器建议放在对应用户的项目目录下操作,无需sudo权限,也不会出现环境变量丢失问题:
- 进入用户级求解器目录:
cd $WM_PROJECT_USER_DIR/applications/solvers - 直接执行创建命令即可:
foamNewSource App newSolver
方案2:保留环境变量执行sudo命令
如果你确实需要在/opt的系统目录下操作,可通过sudo的-E参数保留当前用户的所有环境变量:sudo -E foamNewSource App newSolver
方案3:临时指定环境变量执行
如果-E参数不生效,也可以直接在sudo命令中显式传入需要的环境变量:sudo WM_OPTIONS=linux64GccDPOpt foamNewSource App newSolver
补充说明
正常情况下执行source /opt/OpenFOAM/OpenFOAM-9/etc/bashrc后,WM_OPTIONS等所有OpenFOAM环境变量会自动加载,无需手动export。你之前source后无该变量,大概率是AUR打包的openfoam-org包的环境检测脚本未适配Arch Linux的发行版标识导致的,手动添加export的操作不影响正常使用。
内容的提问来源于stack exchange,提问作者riedaug
相关产品推荐
相关产品推荐

