1

在我先ssh到服务器然后运行命令的情况下,它执行成功

root@chef:~# chef-solo -v
Chef: 11.10.0

但是当我尝试像这样运行它时

 ssh root@188.xxx.xxx.xxx -t -C "chef-solo -c /var/chef/solo.rb"

我收到一个错误:

bash: chef-solo: command not found

为什么会发生这种情况,我该如何解决这个问题?

4

1 回答 1

1

它仍然是$PATH和 ssh 的问题 -而不是厨师独奏。交互式和非交互式会话不一定具有相同的$PATH变量值。在 stackoverflow 上描述了相同的 ssh 问题。您还可以查看GNU bash 手册以更深入地了解(非)交互式和(非)登录 shell。简而言之,解决方案将是以下之一:

  1. 使用绝对路径运行 chef-solo。您的命令可能如下所示:
    • ssh root@188.xxx.xxx.xxx -t -C "/ usr/local/ruby/bin /chef-solo -c /var/chef/solo.rb"
  2. 调整 .bash 配置文件$PATH以为交互式和非交互式 shell 加载相同的变量。

注意:要找出绝对路径,请通过 ssh 登录机器并运行which chef-solo(不知道您对 linux 的经验。抱歉,如果我低估了您的知识)

于 2014-02-11T12:06:57.687 回答