eifersucht
eifersucht

Reputation: 691

shell cd command in Ruby

Im trying to execute shell commands using ruby, but i cant change directory to PATH with blank spaces.

variable = %x[cd #{ENV["HOME"]}/Virtual\\ VMs/]

This is not working. Thank you

Upvotes: 0

Views: 652

Answers (2)

user1934428
user1934428

Reputation: 22356

What is ist supposed to do? You try to chdir into a directory, but then don't do anything in it. Your variable will be empty in any case. Aside from the fact that it is pointless to do, you can not reliably execute a cd by itself in this way, because it is not an executable file. You can see this if you just execute %x[cd]. You will get an Errno::ENOENT exception.

Maybe you should first describe in a broader context, what you want to achieve with your code. Where would you like to change the working directory? Within the Ruby process - in which case you have to use Dir.chdir - or in the child process - in which case you have to execute some command after the cd.

Upvotes: 1

Aleksei Matiushkin
Aleksei Matiushkin

Reputation: 121010

To be absolutely safe:

path = File.join [ENV["HOME"], 'Virtual VMs']
variable = %x[cd '#{path}']

Please note, that cd has empty output, so to make sure it works one probably wants to do smth like:

path = File.join [ENV["HOME"], 'Virtual VMs']
variable = %x[cd '#{path}' && ls -la]
#⇒ "total 32\ndrwxr-xr-x  ....."

Upvotes: 1

Related Questions