linux下使用shell一鍵安裝配置golang開發(fā)環(huán)境

選擇一門開發(fā)語言,免不了需要安裝配置開發(fā)環(huán)境,go1.5+版本提供編譯好的安裝包,我們只需要解壓到相應(yīng)的目錄直秆,并添加一些環(huán)境變量的配置即可。

簡單說一下go的安裝步驟吧:

  1. 下載安裝包go1.7.linux-amd64.tar.gz
  2. 解壓文件到指定目錄: tar -zxf go1.7.linux-amd64.tar.gz
  3. 設(shè)置環(huán)境變量:GOROOT, GOPATH, PATH

既然我們可以列出這些步驟鞭盟,那么便可以將整個過程自動化圾结。

下面是安裝腳本:


#!/bin/bash
#Upgrade go version to 1.7
#wget https://storage.googleapis.com/golang/go1.7.linux-amd64.tar.gz go1.7.tar.gz

function info() {
    echo -e "\033[1;34m$1 \033[0m"
}

function warn() {
    echo  -e "\033[0;33m$1 \033[0m"
}

function error() {
    echo  -e "\033[0;31m$1 \033[0m"
}

function usage() {
    info "Upgrade or install golang..."
    info "USAGE:"
    info "     ./upgrade.sh tar_file gopath"
    info "          tar_file  specify where is the tar file of go binary file"
    info "          gopath    specify where is the go workspace, include src, bin, pkg folder"
}

function createGoPath() {
    if [ ! -d $1 ];
        then
        mkdir -p $1
    fi
    if [ ! -d "$1/src" ];
    then
        mkdir "$1/src"
    fi
    if [ ! -d "$1/bin" ];
    then
        mkdir "$1/bin"
    fi
    if [ ! -d "$1/pkg" ];
    then
        mkdir "$1/pkg"
    fi
}

if [ -z $1 ];
then
    usage
    exit 1
fi

file=$1
if [ ! -f $file ];
then
    error "${file} not exist..."
    exit 1
fi

unzipPath="`pwd`/tmp_unzip_path/"
info $unzipPath

if [ ! -d $unzipPath ];
then
    info "not exist"
    mkdir $unzipPath
fi

tar -zxf $file -C $unzipPath

goroot=$GOROOT
if [ ! -n $GOROOT ];
then
    warn "Use default go root /usr/local/go"
    goroot="/usr/local/go"
fi

gopath=$2
info "Create go workspace, include src,bin,pkg folder..."
if [ -z $2 ];
    then
    user=`whoami`
    gopath="/home/$user/workspace/golang"
    warn "Use $gopath as golang workspace..."
    if [ ! -d $gopath ];
        then
        mkdir -p $gopath
    fi
fi

createGoPath $gopath

info "Copy go unzip files to $goroot"
sudo cp -r "$unzipPath/go" $goroot
rm -rf $unzipPath

#etcProfile="/home/user/Desktop/etc"

etcProfile="/etc/profile"
exportGoroot="export GOROOT=$goroot"
if [ ! -z $GOROOT ];
then
    cat $etcProfile | sed 's/^export.GOROOT.*//' | sudo tee $etcProfile > /dev/null
fi
echo $exportGoroot | sudo tee -a $etcProfile

exportGopath="export GOROOT=$gopath"
if [ ! -z $GOPATH ];
then
    cat $etcProfile | sed 's/^export.GOPATH.*//' | sudo tee $etcProfile > /dev/null
fi
echo "export GOPATH=$gopath" | sudo tee -a  $etcProfile

echo 'export PATH=$GOROOT/bin:$GOPATH/bin:$PATH' | sudo tee -a  $etcProfile

# ## Replace multiple empty lines with one empty line
cat $etcProfile -s | sudo tee $etcProfile > /dev/null

info "To make configuration take effect, will reboot, pls enter[y/n]"
read -p "[y/n]" isReboot
if [ $isReboot = "y" ];
then
    sudo reboot
fi

講一講腳本做的事情吧:

  1. 腳本要求輸入編譯好的安裝包,這里本來是可以做成直接下載的齿诉, 但是考慮到大多數(shù)人是無法連接到golang的官網(wǎng)的筝野,因此放棄了這一步。

  2. 解壓文件到指定的目錄粤剧, 默認為/usr/local/go, 也可以通過運行時指定

  3. 在GOPATH下面創(chuàng)建3個文件夾: src, bin, pkg, GOPATH可以運行時指定歇竟,默認為/home/{user}/workspace/golang

  4. 設(shè)置環(huán)境變量: $GOPATH, $GOROOT

  5. 重啟服務(wù),使對/etc/profile的修改生效

這里有一些主意的點是抵恋,有可能系統(tǒng)配置過golang的環(huán)境變量焕议, 那么需要先刪除這些配置,然后重新寫入弧关。

shell 大法好啊, 最近在看這個, 不過感覺很是蠻難的, 命令實在太多,有些設(shè)計得很優(yōu)雅強大, 理解起來并不是那么直觀(主要是我笨, 記憶不好盅安,,哈哈~)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末唤锉,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子别瞭,更是在濱河造成了極大的恐慌窿祥,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,946評論 6 518
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件蝙寨,死亡現(xiàn)場離奇詭異晒衩,居然都是意外死亡,警方通過查閱死者的電腦和手機墙歪,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,336評論 3 399
  • 文/潘曉璐 我一進店門听系,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人虹菲,你說我怎么就攤上這事跛锌。” “怎么了届惋?”我有些...
    開封第一講書人閱讀 169,716評論 0 364
  • 文/不壞的土叔 我叫張陵,是天一觀的道長菠赚。 經(jīng)常有香客問我脑豹,道長,這世上最難降的妖魔是什么衡查? 我笑而不...
    開封第一講書人閱讀 60,222評論 1 300
  • 正文 為了忘掉前任瘩欺,我火速辦了婚禮,結(jié)果婚禮上拌牲,老公的妹妹穿的比我還像新娘俱饿。我一直安慰自己,他們只是感情好塌忽,可當我...
    茶點故事閱讀 69,223評論 6 398
  • 文/花漫 我一把揭開白布拍埠。 她就那樣靜靜地躺著,像睡著了一般土居。 火紅的嫁衣襯著肌膚如雪枣购。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,807評論 1 314
  • 那天擦耀,我揣著相機與錄音棉圈,去河邊找鬼。 笑死眷蜓,一個胖子當著我的面吹牛分瘾,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播吁系,決...
    沈念sama閱讀 41,235評論 3 424
  • 文/蒼蘭香墨 我猛地睜開眼德召,長吁一口氣:“原來是場噩夢啊……” “哼唤反!你這毒婦竟也來了纵隔?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 40,189評論 0 277
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎厦章,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體野宜,經(jīng)...
    沈念sama閱讀 46,712評論 1 320
  • 正文 獨居荒郊野嶺守林人離奇死亡乔妈,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,775評論 3 343
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了捆等。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片滞造。...
    茶點故事閱讀 40,926評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖栋烤,靈堂內(nèi)的尸體忽然破棺而出谒养,到底是詐尸還是另有隱情,我是刑警寧澤明郭,帶...
    沈念sama閱讀 36,580評論 5 351
  • 正文 年R本政府宣布买窟,位于F島的核電站,受9級特大地震影響薯定,放射性物質(zhì)發(fā)生泄漏始绍。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 42,259評論 3 336
  • 文/蒙蒙 一话侄、第九天 我趴在偏房一處隱蔽的房頂上張望亏推。 院中可真熱鬧,春花似錦年堆、人聲如沸吞杭。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,750評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽芽狗。三九已至,卻和暖如春痒蓬,著一層夾襖步出監(jiān)牢的瞬間译蒂,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,867評論 1 274
  • 我被黑心中介騙來泰國打工谊却, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留柔昼,地道東北人。 一個月前我還...
    沈念sama閱讀 49,368評論 3 379
  • 正文 我出身青樓炎辨,卻偏偏與公主長得像捕透,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,930評論 2 361

推薦閱讀更多精彩內(nèi)容