我想要一个Rake任务将我的命令行工具的路径导出到$ PATH,所以我的Rakefile中有以下行:
task :make_path do
sh 'export PATH=$HOME/Desktop/folder:$PATH'
end
当直接将该行export PATH=$HOME/Desktop/folder:$PATH
放入终端时,该路径将被添加到我的$ PATH变量中。但是如果我运行rake make_path
则没有任何变化。为什么呢?
以下任务正确地将执行权限添加到我的命令行工具文件中:
task :chmod do
sh 'chmod +x my_file'
end
答案 0 :(得分:2)
在Rake任务中使用sh
时,它会生成一个shell并执行命令。
环境变量的生命周期PATH
就是其中之一,直到shell退出。
因此:make_path
任务会生成一个导出此变量的shell,然后退出。下次生成shell时,它不知道对PATH
所做的修改。
对于解决方法,您可能需要查看this。