我尝试执行以下操作:
#!C:\cygwin\bin\bash.exe
ls ${WORKSPACE}
但这找不到 ls (即使它在 windows 路径上)。有什么办法可以设置吗?
更新:换句话说,我希望能够设置一个使用 cygwin bash 而不是 windows cmd 的构建步骤,就像这个页面向您展示了如何使用 Python。
我尝试执行以下操作:
#!C:\cygwin\bin\bash.exe
ls ${WORKSPACE}
但这找不到 ls (即使它在 windows 路径上)。有什么办法可以设置吗?
更新:换句话说,我希望能够设置一个使用 cygwin bash 而不是 windows cmd 的构建步骤,就像这个页面向您展示了如何使用 Python。
所以把你cygwin
的bin
目录放在你的PATH
.
如果您不知道如何操作 ( Control Panel
-> System
-> Advanced
-> Environment Variables
),请参阅:http://support.microsoft.com/kb/310519
该 shell 脚本有两个错误:hash-bang 行应该是“#!/bin/bash”,并且 ${WORKSPACE} 不是 shell 变量。Hudson 有一堆自己的变量,这些变量在您指定要运行的命令中扩展(即,当您在 web gui 中添加命令时)。
如果要在 Cygwin 命令行上运行 Hudson 构建步骤,则需要弄清楚 Hudson 运行什么命令以及在哪个目录中运行。
要给出更具体的答案,您需要向我们展示您的项目是如何配置的,以及您希望单独运行哪些步骤。
如果 cygwin 的 bin 文件夹在您的路径中,则以下内容对我有用:
#!/bin/sh
ls ${WORKSPACE}
我发现除非您重新启动服务器,否则 Hudson 不会选择环境变量更改。
您可能想尝试提供 ls 的完整路径
/cygdrive/c/cygwin/bin/ls
似乎有效的另一件事是使用它:
#!C:\cygwin\bin\bash.exe
export PATH=$PATH:/usr/bin
ls
但是最好不必修改每个脚本的路径。
您是否考虑过电源外壳?尽管我很喜欢 cygwin,但它总是有点不稳定,powershell 是 Windows 上功能齐全的可靠 shell,另一种选择是Windows Services for UNIX它为您提供的 korn shell 或 c shell 不如 bash 好,但它可以胜任完毕
您将需要传递--login
(aka -l
) 选项,bash
以便它获取 Cygwin/etc/profile
并正确设置PATH
变量。这将导致当前目录更改为默认的“home”,但您可以在运行之前将环境变量设置CHERE_INVOKING
为,如果您需要保留它,它将保留在当前目录中。1
bash -l