declare a shell alias in a ruby file

J

jney

Hello,

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 :
-bash: world: command not found

Does anyone know how do i declare a shell alias from a ruby file ?
 
B

Brian Candler

Jean-sébastien Jney said:
Hello,

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 :

Then launching the alias :
-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"

You may find the comp.unix.shell FAQ helpful.
 
J

Jean-Sébastien

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"

You may find the comp.unix.shell FAQ helpful.

Thank you both of you.

eval $(ruby test.rb) works for me.
But output have to a one line command separate by ";".

". myscript" doesn't not work for me. It doesn't read my file as a
ruby one, althrough my file is starting by "#!/usr/bin/env ruby".

Thanks.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,744
Messages
2,569,482
Members
44,901
Latest member
Noble71S45

Latest Threads

Top