Если вам действительно нужен Bash, согласно примечанию в «лучшем» ответе.
Во-первых, обратите внимание, что когда Ruby вызывает оболочку, он обычно вызывает /bin/sh
, , а не Bash. Некоторый синтаксис Bash не поддерживается /bin/sh
во всех системах.
Если вам нужно использовать Bash, вставьте bash -c "your Bash-only command"
в нужный вам метод вызова.
quick_output = system("ls -la")
quick_bash = system("bash -c 'ls -la'")
Для проверки:
system("echo $SHELL")
system('bash -c "echo $SHELL"')
Или, если вы запускаете существующий файл сценария (например, script_output = system("./my_script.sh")
), Ruby должен соблюдать шебанг, но вы всегда можете использовать system("bash ./my_script.sh")
, чтобы убедиться (хотя могут быть небольшие издержки /bin/sh
работает /bin/bash
, вы, вероятно, не заметите.