每次用新的機器,都要把python的環境給安裝一遍~so,這是一件很操蛋的問題,就shell練手寫了一個code,嘿嘿,渣渣技術~html
我愛vagrant,一條命令直接還原成乾淨的測試環境,大愛啊~java
#!/bin/bash # Auther: zhuima # Date: 2014-06-26 # Function: create python env # REVTAL=0 # import Functions . /etc/rc.d/init.d/functions # check network . /etc/sysconfig/network if [ $NETWORKING = 'no' ];then exit $REVTAL fi # install epel yum source function epel_install(){ if rpm --version &>/dev/null;then rpm -ivh http://mirrors.ustc.edu.cn/fedora/epel/6/x86_64/epel-release-6-8.noarch.rpm else exit $REVTAL print "please checking your yum configure!" fi } # install base packages function base_packages(){ if yum repolist &>/dev/null;then yum install yum install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel patch -y else exit $REVTAL print "please checking your yum configure!" fi } # install pip function pip_install(){ if yum repolist &>/dev/null;then yum install python-pip -y else exit $REVTAL print "please checking your yum configure!" fi } # install ipython function ipython_install(){ if yum repolist &>/dev/null;then yum install ipython -y else exit $REVTAL print "please checking your yum configure!" fi } # install pyenv function pyenv_install(){ if git --version &>/dev/null;then cd /`whoami` && git clone git://github.com/yyuu/pyenv.git .pyenv else yum install git -y cd /`whoami` && git clone git://github.com/yyuu/pyenv.git .pyenv fi } # setting pyenv env function pyenv_env(){ echo 'export PYENV_ROOT=$HOME/.pyenv' >> /etc/profile echo 'export PATH=$PYENV_ROOT/bin:$PATH' >> /etc/profile #echo 'eval $(pyenv init -)' >> /etc/profile # exec pyenv.sh if [ -e /etc/profile ];then source /etc/profile else echo "Files is not exists" exit $REVTAL fi } # install python 2.7.6 function python_install(){ if pyenv versions &>/dev/null;then pyenv install 2.7.6 else exit $REVTAL print "please checking your pyenv configure" fi } # install ansible function install_ansible(){ if pip --version &>/dev/null;then pip install ansible else yum install pip -y pip install ansible fi } while :;do cat << EOF +-------------------------------------------+ |一、Install epel_install | |二、Install base_packages | |三、Install pip_install | |四、Install ipython_install | |五、Install pyenv_install | |六、Install pyenv_env | |七、Install python2.7.6_install | |八、One-Click Setup | |九、[Q|q|quit] to quit | +-------------------------------------------+ EOF read -p "select which one packages you want to install: " choice case $choice in 1) epel_install ;; 2) base_packages ;; 3) pip_install ;; 4) ipython_install ;; 5) pyenv_install ;; 6) pyenv_env ;; 7) python2.7.6_install ;; 8) epel_install base_packages pip_install ipython_install pyenv_install pyenv_env python_install source /etc/profile ;; Q|q|quit) exit $REVTAL ;; *) echo "Usage: select one number(1|2|3|4|5|6|7|8|9)" exit $REVTAL ;; esac done
source filename 與 sh filename 及./filename執行腳本的區別在那裏呢?
1.當shell腳本具備可執行權限時,用sh filename與./filename執行腳本是沒有區別得。./filename是由於當前目錄沒有在PATH中,全部"."是用來表示當前目錄的。
2.sh filename 從新創建一個子shell,在子shell中執行腳本里面的語句,該子shell繼承父shell的環境變量,但子shell新建的、改變的變量不會被帶回父shell,除非使用export。
3.source filename:這個命令其實只是簡單地讀取腳本里面的語句依次在當前shell裏面執行,沒有創建新的子shell。那麼腳本里面全部新建、改變變量的語句都會保存在當前shell裏面。python
來源: http://www.blogjava.net/jjshcc/archive/2012/12/12/392904.htmlgit
1.Linux的變量種類
按變量的生存週期來劃分,Linux變量可分爲兩類:
1.1 永久的:須要修改配置文件,變量永久生效。
1.2 臨時的:使用export命令聲明便可,變量在關閉shell時失效。
2.設置變量的三種方法
2.1 在/etc/profile文件中添加變量【對全部用戶生效(永久的)】
用VI在文件/etc/profile文件中增長變量,該變量將會對Linux下全部用戶有效,而且是「永久的」。
例如:編輯/etc/profile文件,添加CLASSPATH變量
# vi /etc/profile
export CLASSPATH=./JAVA_HOME/lib;$JAVA_HOME/jre/lib
注:修改文件後要想立刻生效還要運行# source /etc/profile否則只能在下次重進此用戶時生效。
2.2 在用戶目錄下的.bash_profile文件中增長變量【對單一用戶生效(永久的)】
用VI在用戶目錄下的.bash_profile文件中增長變量,改變量僅會對當前用戶有效,而且是「永久的」。
例如:編輯guok用戶目錄(/home/guok)下的.bash_profile
$ vi /home/guok/.bash.profile
添加以下內容:
export CLASSPATH=./JAVA_HOME/lib;$JAVA_HOME/jre/lib
注:修改文件後要想立刻生效還要運行$ source /home/guok/.bash_profile否則只能在下次重進此用戶時生效。
2.3 直接運行export命令定義變量【只對當前shell(BASH)有效(臨時的)】
在shell的命令行下直接使用[export 變量名=變量值] 定義變量,該變量只在當前的shell(BASH)或其子shell(BASH)下是 有效的,shell關閉了,變量也就失效了,再打開新shell時就沒有這個變量,須要使用的話還須要從新定義。
3.環境變量的查看
3.1 使用echo命令查看單個環境變量。例如:
echo $PATH
3.2 使用env查看全部環境變量。例如:
env
3.3 使用set查看全部本地定義的環境變量。
unset能夠刪除指定的環境變量。
4.經常使用的環境變量
PATH 決定了shell將到哪些目錄中尋找命令或程序
HOME 當前用戶主目錄
HISTSIZE 歷史記錄數
LOGNAME 當前用戶的登陸名
HOSTNAME 指主機的名稱
SHELL 當前用戶Shell類型
LANGUGE 語言相關的環境變量,多語言能夠修改此環境變量
MAIL 當前用戶的郵件存放目錄
PS1 基本提示符,對於root用戶是#,對於普通用戶是$github
來源: http://285118.blog.51cto.com/275118/1174676sql
bug:因爲每次都是su切換到root帳戶的,因此/etc/profile中pyenv的環境變量不生效,須要從新source下才行,這也是一個小bug~shell
緣由:.pyenv文件在root帳戶家目錄下,而PATH中添加的是當前$HOME/.pyenv/bin,除了root家目錄下有.pyenv以外,普通用戶家目錄下沒有,因此就致使pyenv的環境變量不生效的問題~bash
解決辦法:
su切換的時候使用 su - 便可python2.7
PS:ide
實際生產環境中,可能是在普通用戶下建立.pyenv文件夾的,因此這個問題也不是問題了