shell - "source" in ruby subshells -
i need run shell command ruby application. i'm using system()
applies backticks.
when running command, need load shell script first sets things try this:
system("source my_script.sh && my_command")
on mac laptop works intended on ubuntu server get:
sh: 1: source: not found
i wondering "sh" in there since shell should bash, tried this:
system("echo $shell && source my_script.sh && my_command")
which gives me:
/bin/bash sh: 1: source: not found
so, using right shell reason, source
not work.
why? , can it?
update sergio tulentsev pointed out, ruby not use shell set in $shell.
this gave me actual shell ruby using:
system("ps -p $$ | tail -1 | awk '{print $nf}'") sh => true
so, it's using sh. can somehow force use bash?
you need try adding ./
in front of file want source, should work if subshell bash (check $shell
).
irb(main):003:0> system("source ./test.sh && echo $test && cat test.sh") test export test=test => true
if $shell
sh
, need . ./test.sh
instead of source ./test.sh
, source keyword bash only.
or can make sure using bash, doing:
irb(main):007:0> system("/bin/bash -c 'source ./test.sh && echo $test && cat test.sh'") test export test=test => true
Comments
Post a Comment