【问题标题】:Chef: How to set EDITOR for knife厨师:如何为刀设置编辑器
【发布时间】:2018-07-05 22:09:12
【问题描述】:

当我运行下面的命令时,我得到下面提到的错误:

$ knife node edit hostname.domain.com
ERROR: You must set your EDITOR environment variable or configure your editor via knife.rb

我想在 knife.rb 中设置编辑器值,但我无法找到与编辑器对应的选项。我浏览了以下链接,这些链接解释了 Knife.rb 支持的各种选项:

http://docs.opscode.com/config_rb_knife.html

http://docs.opscode.com/config_rb_knife_optional_settings.html

我知道我没有忽略上面的链接,但我可以;找不到与设置编辑器值相关的选项。

您能否指出正确的选项,这将帮助我为刀设置编辑器。

谢谢。

【问题讨论】:

  • 最好设置EDITOR 环境变量,因为它被许多进程使用。您可以将其导出到您的 ~/.bashrc 文件中(如果使用 bash)。我的指向/usr/bin/vim,但您可以使用您选择的编辑器。

标签: chef-infra


【解决方案1】:

您可以通过两种方式设置 EDITOR 变量。第一种方法是在命令行中设置 EDITOR 变量。

export "EDITOR=nano"

export "EDITOR=vim"

第二种方式在knife.rb文件中设置EDITOR。

knife[:editor]="vim"

knife[:editor]="nano"

nano 也是 Ubuntu 附带的编辑器。

【讨论】:

  • knife.rb 在哪里
【解决方案2】:

如果我们检查source codeassert_editor_set! 方法),我们可以看到它检查了config[:editor]。 knife.rb 中的 knife[:editor] 从逻辑上讲应该可以工作。

knife[:editor] 在最新的 Chef (v.11.4.4) 中为我工作。但是在旧版本(v10.26)中它不起作用。

【讨论】:

  • 谢谢。 knife[:editor]="/usr/bin/vim" 工作。我的是 11.4.4。所以生活是美好的。
  • knife[:editor] 是首选且最简单的方法,但您也可以设置环境变量 EDITOR
【解决方案3】:

对于可视化编辑器(如 atom 或 code),您需要使用 '-w' 开关导出 EDITOR 变量: export EDITOR='atom -w'

【讨论】:

    【解决方案4】:

    不幸的是,厨师不将“vi”识别为编辑器,因此仅设置 vim 或 nano。

    【讨论】:

    • 是否存在关于更改此内容的 github 问题?