0

I would like a Rake task to export the path to my command line tool to $PATH, and so I have the following line in my Rakefile:

task :make_path do
  sh 'export PATH=$HOME/Desktop/folder:$PATH'
end

When putting that line export PATH=$HOME/Desktop/folder:$PATH into the terminal directly, the path is prepended to my $PATH variable. However if I run rake make_path nothing changes. Why?

The following task correctly adds execute permission to my command line tool file:

task :chmod do
  sh 'chmod +x my_file'
end
ErikAGriffin
  • 739
  • 3
  • 10
  • 21

1 Answers1

2

When using sh from within a Rake task, it spawns a shell and executes the command.

The lifetime of environment variables, PATH being one of them, is until the shell exits.

So the :make_path task spawns a shell that exports this variable and then exits. Next time a shell is spawned, it has no knowledge of the modifications made to PATH.

For workarounds you might want to look at this.

Community
  • 1
  • 1
egwspiti
  • 957
  • 5
  • 10