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

Python调用Cygwin Bash脚本时cp/sed等命令找不到的解决方法

解决思路
  • 用登录Shell启动Bash
    Cygwin的外部命令(如cp、sed)依赖完整的环境变量加载,直接用bash -c不会加载/etc/profile等配置。改用bash --login -c启动登录Shell,强制加载环境变量,同时把Windows路径转换为Cygwin识别的/cygdrive/盘符/路径格式:

    import subprocess
    cmd = ["C:\\cygwin64\\bin\\bash", "--login", "-c", "cd /cygdrive/d/Maria_Eugenia/SOFT/VIEVS_forupdate2/automatic-py; ./ncextract.sh"]
    ret = subprocess.call(cmd)
    
  • 手动注入环境变量
    复制当前系统环境变量,将Cygwin的bin目录添加到PATH最前端,确保Bash能找到外部命令:

    import os, subprocess
    env = os.environ.copy()
    env['PATH'] = r"C:\cygwin64\bin;" + env['PATH']
    cmd = ["bash", "-c", "cd /cygdrive/d/Maria_Eugenia/SOFT/VIEVS_forupdate2/automatic-py; ./ncextract.sh"]
    ret = subprocess.call(cmd, env=env)
    
  • 调用Cygwin启动脚本
    直接使用Cygwin自带的启动批处理文件,传递执行脚本的命令,确保环境完全匹配手动打开Cygwin时的状态:

    import subprocess
    cmd = [r"C:\cygwin64\Cygwin.bat", "-c", "cd /cygdrive/d/Maria_Eugenia/SOFT/VIEVS_forupdate2/automatic-py && ./ncextract.sh"]
    ret = subprocess.call(cmd)
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 14:00:01