gpt4 book ai didi

ruby - ruby 使用哪个 shell 作为它的子 shell?

转载 作者:数据小太阳 更新时间:2023-10-29 07:15:23 24 4
gpt4 key购买 nike

如果我这样做

`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/bash\n"
irb(main):002:0> `bash -c 'echo $0 -- $SHELL'`
=> "bash -- /bin/bash\n"
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

关于ruby - ruby 使用哪个 shell 作为它的子 shell?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12629519/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com