2012-09-27 15 views
5

Si hago¿Qué rubí de concha usa como subshell?

`echo $SHELL` 

, me sale /bin/bash.

Pero si trato de ejecutar este bucle:

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

me sale {1..20} esperados en lugar de 20 números.

¿Quizás ruby ​​usa algún otro shell para ejecutar esos comandos? ¿Cómo puedo solucionar esto?

EDIT: versiones de software:

$ 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) 
+0

obtengo ' "/ bin/bash \ n"' y '" 1 \ n2 \ n3 \ n4 \ n5 \ n6 \ n7 \ n8 \ n9 \ n10 \ n11 \ n12 \ n13 \ n14 \ n15 \ n16 \ n17 \ n18 \ n19 \ n20 \ n "' – Kyle

Respuesta

6

Rubí utiliza sh como el subnivel de acentos abiertos y #system. $SHELL es su shell predeterminado, $0 debería decirle su shell actual. Usted puede conseguir su cáscara deseada invocando específicamente

$ 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 
Cuestiones relacionadas