5

当 cap3 尝试在我的 FreeBSD 服务器上执行命令时 - 我有一个错误并且我的 cap3 任务不起作用

DEBUG [0bb99d53] Command: if test ! -d /home/web_server/data/www/capistrano/site/shared/dumps; then echo "Directory does not exist '/home/web_server/data/www/capistrano/site/shared/dumps'" 1>&2; false; fi
DEBUG [0bb99d53]    if: Expression Syntax.
DEBUG [0bb99d53]    fi: Command not found.

我知道为什么 - 因为我的服务器默认使用 csh shell

% echo $0
-csh

以下 cap3 变量对我不起作用

set :shell, '/usr/local/bin/bash'
set :default_shell, '/usr/local/bin/bash'

如何为 cap3 任务设置 shell?

4

2 回答 2

1

您可以为服务器上的部署用户设置默认 shell 为 bash。

chsh -s /usr/local/bin/bash [your_deploy_user]

这对我有用。

于 2015-04-16T12:00:05.093 回答
0

我的观点是你可以尝试使用:

/bin/bash -c 'if test ! -d /home/web_server/data/www/capistrano/site/shared/dumps; then echo "Directory does not exist \'/home/web_server/data/www/capistrano/site/shared/dumps\'" 1>&2; false; fi'

从 Bash 手册页:

如果存在 -c 选项,则从字符串中读取命令。如果字符串后面有参数,则将它们分配给位置参数,从 $0 开始。

我做了一个测试,它对我有用:

1@one:~>%bash -c "/bin/echo Hello; echo Goodbye"
Hello
Goodbye
于 2015-04-02T08:53:44.410 回答