2024-05-13 02:56:27 发布
网友
我试图写一个超级简单的bash脚本。基本上是激活一个虚拟环境,然后切换到工作目录。我做了很多工作,只服从一个命令,这才有意义。
基本上。。。
#!/bin/bash source /usr/local/turbogears/pps_beta/bin/activate cd /usr/local/turbogears/pps_beta/src
但是,当它运行时,它只是转储回shell,而我仍然在运行脚本的目录中,并且环境没有被激活。
您只需使用source命令运行脚本。这是因为cd命令是运行它的shell的本地命令。当您直接运行一个脚本时,将执行一个新的shell,当它到达脚本的文件结尾时终止。通过使用source命令,可以告诉shell直接执行脚本的指令。
我想你希望你的脚本是动态的,但是,作为一个快速修复时,在一个新的系统上我创建了一个别名。
begin i.e the env is called 'py1' located at ~/envs/py1/ with a repository location at ~/proj/py1/alias py1='source ~/envs/py1/bin/activate; cd ~/proj/py1/;end i.e
begin i.e
the env is called 'py1' located at ~/envs/py1/ with a repository location at ~/proj/py1/
alias py1='source ~/envs/py1/bin/activate; cd ~/proj/py1/;
end i.e
现在,您可以从CLI中的任何位置键入py1来访问您的项目和virtualenv。
我知道这不是一个接近理想的地方,违背了DRY和许多其他编程概念。这只是一种快速而肮脏的方法,无需设置变量即可快速访问env和项目。
cd的值是当前脚本的本地值,当您从文件末尾掉下来时,当前脚本将结束。
cd
你要做的并不是“超级简单”,因为你想覆盖这个行为。
查看exec,用您选择的进程替换当前进程。
exec
要将命令输入交互式Bash,请查看--rcfile选项。
--rcfile
您只需使用source命令运行脚本。这是因为cd命令是运行它的shell的本地命令。当您直接运行一个脚本时,将执行一个新的shell,当它到达脚本的文件结尾时终止。通过使用source命令,可以告诉shell直接执行脚本的指令。
我想你希望你的脚本是动态的,但是,作为一个快速修复时,在一个新的系统上我创建了一个别名。
现在,您可以从CLI中的任何位置键入py1来访问您的项目和virtualenv。
我知道这不是一个接近理想的地方,违背了DRY和许多其他编程概念。这只是一种快速而肮脏的方法,无需设置变量即可快速访问env和项目。
cd
的值是当前脚本的本地值,当您从文件末尾掉下来时,当前脚本将结束。你要做的并不是“超级简单”,因为你想覆盖这个行为。
查看
exec
,用您选择的进程替换当前进程。要将命令输入交互式Bash,请查看
--rcfile
选项。相关问题 更多 >
编程相关推荐