加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

哪个shell ruby??用作子shell?

发布时间:2020-12-15 21:46:25 所属栏目:安全 来源:网络整理
导读:如果我做 `echo $SHELL` ,我得/ bin / bash. 但是,如果我尝试运行此循环: `for x in {1..20}; do echo $x; done` 我得到{1..20}而不是预期的20个数字. 也许ruby使用其他一些shell来运行这些命令?我该如何解决这个问题? 编辑:软件版本: $irb --versionir
如果我做

`echo $SHELL`

,我得/ bin / bash.

但是,如果我尝试运行此循环:

`for x in {1..20}; do echo $x; done`

我得到{1..20}而不是预期的20个数字.

也许ruby使用其他一些shell来运行这些命令?我该如何解决这个问题?

编辑:软件版本:

$irb --version
irb 0.9.5(05/04/13)
$ruby --version
ruby 1.8.7 (2010-06-23 patchlevel 299) [x86_64-linux]
$bash --version
GNU bash,version 4.1.5(1)-release (x86_64-pc-linux-gnu)

解决方法

Ruby使用sh作为反引号和#system的子shell. $SHELL是你的默认shell,$0应该告诉你你当前的shell.您可以通过专门调用它来获得所需的shell

$ruby -v
ruby 1.8.7 (2011-02-18 patchlevel 334) [x86_64-linux],MBARI 0x6770,Ruby Enterprise Edition 2011.03
$irb --version
irb 0.9.5(05/04/13)
$irb
irb(main):001:0> `echo $0 -- $SHELL`
=> "sh -- /bin/bashn"
irb(main):002:0> `bash -c 'echo $0 -- $SHELL'`
=> "bash -- /bin/bashn"
irb(main):003:0> ENV['SHELL']
=> "/bin/bash"
irb(main):004:0> system 'bash','-c','echo $0 -- $SHELL'
bash -- /bin/bash
=> true
irb(main):005:0> system 'echo $0 -- $SHELL'
sh -- /bin/bash
=> true

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读