Prev: Ruby networking: Errno::ECONNREFUSED: Connection refused -connect(2) on Ubuntu 9.1
Next: Triggering the debugger II
From: Bob Proulx on 15 Jul 2010 18:19 Intransition wrote: > Any advice on how a ruby script can set a config info that's per > parent process. Using an environment variable? > In other words I want to be able to do something like: > ... > But if I close my terminal and/or open a new terminal then it will > have it's own setting. Have foo set an environment variable and then exec a new shell. The foo script later can print the variable if it exists. Here is something off the top of my head. Untested. It spawns a new shell though and that may be too disruptive for your needs. Bob #!/bin/sh if [ -n "$myuniquefoovar" ]; then echo "$myuniquefoovar" # or possibly printf exit 0 fi if [ $# -ne 0 ]; then myuniquefoovar="$*" export myuniquefoovar exec $SHELL fi exit 0
From: Intransition on 15 Jul 2010 20:10 On Jul 15, 6:19 pm, Bob Proulx <b...(a)proulx.com> wrote: > Have foo set an environment variable and then exec a new shell. The > foo script later can print the variable if it exists. Here is > something off the top of my head. Untested. It spawns a new shell > though and that may be too disruptive for your needs. > > Bob > > #!/bin/sh > if [ -n "$myuniquefoovar" ]; then > echo "$myuniquefoovar" # or possibly printf > exit 0 > fi > if [ $# -ne 0 ]; then > myuniquefoovar="$*" > export myuniquefoovar > exec $SHELL > fi > exit 0 Thanks, I feel like I've gotten a step closer, but still no cigar. I was able to get the child shell, which is cool --and I can accept that if need to be o get this to work. But I can't get the environment variable transfer into the new shell.
From: Intransition on 15 Jul 2010 20:27 On Jul 15, 8:10 pm, Intransition <transf...(a)gmail.com> wrote: > > #!/bin/sh > > if [ -n "$myuniquefoovar" ]; then > > echo "$myuniquefoovar" # or possibly printf > > exit 0 > > fi > > if [ $# -ne 0 ]; then > > myuniquefoovar="$*" > > export myuniquefoovar > > exec $SHELL > > fi > > exit 0 > > Thanks, I feel like I've gotten a step closer, but still no cigar. I > was able to get the child shell, which is cool --and I can accept that > if need to be o get this to work. But I can't get the environment > variable transfer into the new shell. Just discovered that capitalized variables (environment variables) are not transferred. But lowercase variables (shell variables) are. So this will work! Thanks Bob.
From: Phil Romero on 15 Jul 2010 20:45 On Thu, Jul 15, 2010 at 2:35 PM, Intransition <transfire(a)gmail.com> wrote: > Any advice on how a ruby script can set a config info that's per > parent process. In other words I want to be able to do something like: > > $ foo > no setting > > Then... > > $ foo 10 > > Which will store 10 somehow. And when I run foo again it can output > 10. > > $ foo > 10 > > But if I close my terminal and/or open a new terminal then it will > have it's own setting. > > % foo > no setting > > Thanks. > > $ env FOO="something" sh $ echo "${FOO}" something $ exit $ echo "${FOO}" $ env FOO="string for ruby to print" ruby -e 'puts ENV["FOO"]' string for ruby to print $ echo "${FOO}" $
From: Intransition on 15 Jul 2010 23:25
On Jul 15, 8:27 pm, Intransition <transf...(a)gmail.com> wrote: > Just discovered that capitalized variables (environment variables) are > not transferred. But lowercase variables (shell variables) are. Looks like I am wrong about this. I ran an isolated test and they both come through --not sure why my capitalized form was getting clobbered. |