Ruby:尝试运行set命令

时间:2013-02-13 15:49:20

标签: ruby bash shell

我正在使用Chef和ruby,我正在尝试运行set命令。

setVarList = %x(set)

如果我只是输入set它工作正常,但如果我运行此脚本,我会收到以下错误:

/var/chef/cache/cookbooks/motd/recipes/default.rb:22: command not found:   set

有什么问题?

2 个答案:

答案 0 :(得分:3)

正如Anew已经提到过: set 是bash内置命令,但ruby%x()shell是 sh

%x(echo $0)

解决方法是明确地运行bash,正如CodeGnome在评论中提出的那样。

%x(/bin/bash -c set)

答案 1 :(得分:2)

看起来你没有产生bash shell。

set是一个内置的bash:

  

4.3.1 Set Builtin

     

这个内置非常复杂,值得拥有自己的部分。 set允许您更改shell选项的值并设置位置参数,或显示shell变量的名称和值。

set
set [--abefhkmnptuvxBCEHPT] [-o option-name] [argument …]
set [+abefhkmnptuvxBCEHPT] [+o option-name] [argument …]
  

如果未提供任何选项或参数,则set将显示所有shell变量和函数的名称和值,这些变量和函数按照当前区域设置进行排序,格式可以重复用作设置或重置当前设置变量的输入。只读变量无法重置。在POSIX模式下,仅列出shell变量。

http://www.gnu.org/software/bash/manual/html_node/The-Set-Builtin.html

尝试运行ps -p $$以查看正在生成的shell。

anew@Wintermute:~$ ps -p $$
  PID TTY           TIME CMD
10018 ttys001    0:00.11 -bash
anew@Wintermute:~$