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

Ansible切换oracle用户执行Linux脚本出现sh command not found错误如何解决

报错原因

你在playbook的environment字段中自定义了PATH变量,该配置会覆盖目标用户的默认PATH,而非追加内容。你配置的PATH值仅包含/usr/sbin、Oracle相关二进制目录、/usr/local/bin,缺少系统默认的/bin、/usr/bin路径,而sh命令默认存放在这两个路径下,因此执行时无法找到命令。
手动切换oracle用户执行正常,是因为此时用户的默认PATH自带/bin、/usr/bin路径,不存在缺失问题。

解决方案

你可以任选以下任意一种方式修复:

  • 补全PATH中的系统路径
    在现有的PATH配置末尾追加/bin:/usr/bin即可,修改后配置如下:
    PATH: /usr/sbin:/oracle/oracle/app/oracle/product/12.2.0/dbhome_1/bin:/usr/local/bin:/bin:/usr/bin
    
  • 避免全量覆盖PATH,改为追加Oracle路径
    直接引用Ansible采集到的目标节点默认PATH,在其基础上添加Oracle需要的二进制路径,无需手动补全系统路径:
    PATH: "{{ ansible_env.PATH }}:/oracle/oracle/app/oracle/product/12.2.0/dbhome_1/bin"
    
  • 直接使用sh的绝对路径调用脚本
    不修改环境变量配置,直接指定sh的绝对路径执行命令:
    shell: /bin/sh ora_expdp_partition.sh P_05_2021
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 19:06:02