I’m trying to declare a shell alias from a ruby file.
here is the file test.rb :
begin test.rb
alias world='echo hello'
you spawn a shell, declare the alias, then the shell exits taking the
alias with it.
I’m launching it :
ruby test.rb
Then launching the alias :
world
-bash: world: command not found
Does anyone know how do i declare a shell alias from a ruby file ?
If you want a child process to make changes to the current process, you
have to make the child tell the parent what to do and then the parent
has to do it.
I’m trying to declare a shell alias from a ruby file.
here is the file test.rb :
begin test.rb
alias world='echo hello'
end test.rb
I’m launching it :
ruby test.rb
Then launching the alias :
world
-bash: world: command not found
Does anyone know how do i declare a shell alias from a ruby file ?
You cannot.
The processes are started as follows:
your shell --------------> ruby process --------> another shell
ruby test.rb xxx
Each process is completely independent of the others - with its own
address space, and its own copy of the ENVironment. When the second
shell terminates, it cannot affect the ruby process, nor the original
shell which started that ruby process.
The only way you can do this is from the original shell itself. Either
type your alias command at the shell prompt, or put it in a file and do
. myscript
The dot (.) means “read this file and execute it as commands within this
shell”
ruby one, althrough my file is starting by “#!/usr/bin/env ruby”.
Brian is saying that the ruby script writes shell commands to a file
named “myscript” (instead of printing them to stdout). Then the shell
will source that file (instead of ‘eval’-ing its stdin).
From: Glenn J. [email protected]
Subject: Re: declare a shell alias in a ruby file
To: “ruby-talk ML” [email protected]
Date: Friday, September 4, 2009, 6:30 AM
 ruby one, althrough my file is starting by “#!/usr/bin/env ruby”.
Brian is saying that the ruby script writes shell commands to a file
named “myscript” (instead of printing them to stdout). Then the shell
will source that file (instead of ‘eval’-ing its stdin).
This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.