Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从批处理调用时未找到cywin bash脚本命令_Bash_Cygwin - Fatal编程技术网

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

从批处理调用时未找到cywin bash脚本命令,bash,cygwin,Bash,Cygwin,当在cygwin控制台内调用上述脚本时,该脚本可以正常工作,但当我尝试从批处理文件调用它时,date和tar命令会出现“command not found”。我认为bash.exe没有设置路径 我需要从该批处理文件运行该脚本,因为我要将该脚本添加到任务计划程序。将cygwin-bin目录(可能是C:\cygwin\bin)放在PATH环境变量上 这还将使您能够从常规控制台窗口而不仅仅是Cygwin控制台使用诸如tar、ls、rm等命令 你是这样称呼你的剧本的吗 #!/bin/bash echo

当在cygwin控制台内调用上述脚本时,该脚本可以正常工作,但当我尝试从批处理文件调用它时,date和tar命令会出现“command not found”。我认为bash.exe没有设置路径


我需要从该批处理文件运行该脚本,因为我要将该脚本添加到任务计划程序。

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

这还将使您能够从常规控制台窗口而不仅仅是Cygwin控制台使用诸如
tar
ls
rm
等命令

你是这样称呼你的剧本的吗

#!/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"

如果从Windows命令shell调用此脚本,第一行将导致一个错误,因为
#/bin/bash
不是可识别的Windows命令,
#
不是批处理文件中的有效注释分隔符


因此,底线是该脚本作为常规批处理文件运行,而不是从Cygwin的bash中运行。如
matt b
所述,path环境变量中可能没有Cygwin可执行路径。否则,批处理文件将无法找到Cygwin实用程序(
tar
date
)。

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

创建一个名为“CYGWIN_HOME”且值为“C:\CYGWIN”的新环境变量(或安装CYGWIN的任何位置。默认位置为“C:\CYGWIN\”,因此这可能适用于您)

然后编辑名为“PATH”的环境变量,并将以下内容添加到末尾:

;%CYGWIN_HOME%\bin;%CYGWIN_HOME%\sbin;%CYGWIN_HOME%\usr\bin;%CYGWIN\u HOME%\usr\sbin;%CYGWIN\u HOME%\usr\local\bin;%CYGWIN\u HOME%\usr\local\sbin


关闭命令提示符,然后重新打开它。cygwin二进制文件现在应该可以使用了。您可以通过键入“which bash”来再次检查这一点。它应该报告bash可执行文件的位置。

我刚刚遇到这个问题

编辑环境变量非常有效。但是如果你没有管理员权限,你就不能这么做。 在这种情况下,您可以使用以下绝对路径执行命令:

bash --login -i ./myscript.sh

如果这样做,即使从批处理文件调用bash脚本,它也能工作。

在迄今为止发布答案的人中,seth是唯一认识到将C:\cygwin\bin放在路径上不允许Windows神奇地理解bash脚本的人。您需要将脚本发送到bash.exe。批处理为:C:\cygwin\bin\bash.exe“C:\backup.sh”我想我没有在cygwin中安装cron。我是否只需要安装它,还是需要进行更多配置才能使用cron?谢谢你,伙计@rtacconi-它不仅仅是安装。我在回答中的链接经历了安装/配置cronHi的步骤,我添加了路径(我确信这是正确的路径),但是仍然找不到ls、grep等命令。有什么想法吗?
/usr/bin/tar cvzf $filename
/usr/bin/cat $filename