从批处理调用时找不到cywin bash脚本命令

rta*_*oni 11 bash cygwin

#!/bin/bash
echo "Testing"
cd "/cygdrive/x/Internal Communications/Riccardo/"
filename=htdocs-`date +%A`.tar.gz
tar cvzf $filename "/cygdrive/c/Program Files/Zend/Apache2/htdocs"
Run Code Online (Sandbox Code Playgroud)

上面的脚本在cygwin控制台内部调用时正常工作,但是当我尝试从批处理文件中调用它时,我得到"命令未找到"的日期和tar命令.我认为bash.exe没有设置PATH.

我需要从该批处理文件中运行该脚本,因为我想将脚本添加到任务调度程序.

Mic*_*yan 17

如前所述,您需要将Cygwin二进制文件添加到路径中.为此,右键单击"我的电脑",单击"属性",然后单击"高级",再单击"环境变量".

创建一个名为"CYGWIN_HOME"且值为"C:\ cygwin"的新环境变量(或安装cygwin的任何位置.默认位置为"C:\ cygwin \",因此这可能对您有用).

然后编辑名为"PATH"的环境变量,并将以下内容添加到最后:

;%CYGWIN_HOME%\ BIN;%CYGWIN_HOME%\ sbin目录;%CYGWIN_HOME%的\ usr\BIN;%CYGWIN_HOME%的\ usr\sbin目录;%CYGWIN_HOME%的\ usr \本地\ BIN;%CYGWIN_HOME%的\ usr \本地\ sbin目录

关闭命令提示符,然后重新打开它.现在应该可以获得cygwin二进制文件.你可以输入"which bash"来仔细检查.它应该报告您的bash可执行文件的位置.


set*_*eth 11

FWIW,Cygwin有cron.

你是这样打电话给你的剧本的?

bash --login -i ./myscript.sh
Run Code Online (Sandbox Code Playgroud)

  • 到目前为止已经发布答案的人中,seth是唯一认识到在路径上放置C:\ cygwin\bin不允许Windows神奇地理解bash脚本的人.您需要将脚本发送到bash.exe. (4认同)

mat*_*t b 10

将您的cygwin bin目录(可能C:\cygwin\bin)放在PATH环境变量上.

这也给你能够使用像命令的利益tar,ls,rm从一个普通的控制台窗口等,而不仅仅是一个Cygwin的控制台.