搭建自己終端開(kāi)發(fā)環(huán)境(go,pyenv,nvm)

目標(biāo)

搭建一個(gè)自定義的命令行開(kāi)發(fā)環(huán)境(go,python,node

python使用pyenv部署,node使用nvm部署,以便實(shí)現(xiàn)多版本自由切換

部署/準(zhǔn)備

我們以在家目錄下配置為例子,其中 .env 為家目錄下的隱藏目錄(~/.env), 產(chǎn)出如下目錄結(jié)構(gòu):

~/.env
  ├── bin
  ├── config
  ├── go
  ├── init
  ├── nvm
  ├── package
  ├── pyenv

程序安裝

mkdir -p .env/bin

# 安裝 pyenv
cd .env && git clone https://github.com/pyenv/pyenv.git
cd -

# 安裝 nvm
cd .env && git clone https://github.com/nvm-sh/nvm.git
cd -

# 安裝 go
# go的版本可以根據(jù)自己需要和使用操作系統(tǒng)選擇不同的安裝包
cd .env && curl -o go.tar.gz https://dl.google.com/go/go1.13.15.linux-amd64.tar.gz && tar -zxf go.tar.gz && rm -f go.tar.gz

環(huán)境配置

編輯.env/init文件(例子中的路徑~/.env/init),內(nèi)容如下:

ENVDIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
if [ "x$SHELL" != 'x/bin/bash' ]
then
    ENVDIR="$( cd "$(dirname "$0")" >/dev/null 2>&1 ; pwd -P )"
fi

ENVCONFIG=${ENVDIR}/etc
ENVPACKAGE=${ENVDIR}/package

# bin 和 local/bin 加入 PATH, 可以放些小程序在里面
ENVBIN=${ENVDIR}/bin
if [ -d ${ENVDIR} ]
then
    export PATH=${ENVBIN}:$PATH
fi

ENVLOCALBIN=${ENVDIR}/local/bin
if [ -d ${ENVLOCALBIN} ]
then
    export PATH=${ENVLOCALBIN}:$PATH
fi

# 配置golang環(huán)境變量
ENVGO=${ENVDIR}/go
if [ -d ${ENVGO} ]
then
    export PATH=${ENVGO}/bin:$PATH
    export GOENV=${ENVCONFIG}/go/env
    if command -v go 1>/dev/null 2>&1; then
        export GOPATH=${ENVPACKAGE}/go
        export PATH=${GOPATH}/bin:$PATH
        eval "$(go env -w GO111MODULE=on)"
        eval "$(go env -w GOPROXY=goproxy.cn)"
        eval "$(go env -w GOSUMDB=off)"
        eval "$(go env -w GOPATH=${GOPATH})"
    fi
fi

ENVNVM=${ENVDIR}/nvm
if [ -d ${ENVNVM} ]
then
    export NVM_DIR="${ENVNVM}"
    [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"  # This loads nvm
    [ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion"  # This loads nvm bash_completion
fi

ENVPYENV=${ENVDIR}/pyenv
if [ -d ${ENVPYENV} ]
then
    export PYENV_ROOT=${ENVPYENV}
    export PATH="${PYENV_ROOT}/bin:$PATH"
    if command -v pyenv 1>/dev/null 2>&1; then
        eval "$(pyenv init -)"
    fi
fi

編輯.env.init文件(例子中的路徑~/.env.init):

BASEDIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
if [ "x$SHELL" != 'x/bin/bash' ]
then
    BASEDIR="$( cd "$(dirname "$0")" >/dev/null 2>&1 ; pwd -P )"
fi

ENVINIT=${BASEDIR}/.env/init

if [ -f ${ENVINIT} ]
then
    source ${ENVINIT}
fi

使用

環(huán)境使用初始化

.bashrc 或者 .zshrc 或者其他配置文件中,增加引用
.env在家目錄為例,可以在 .bashrc 或者 .zshrc 中增加如下代碼片段

if [ -f ${HOME}/.env.init ]
then
    source ${HOME}/.env.init
fi

環(huán)境使用及驗(yàn)證

python

參考pyenv官方文檔: https://github.com/pyenv/pyenv/blob/master/COMMANDS.md

node

參考nvm官方文檔配置node: https://github.com/nvm-sh/nvm#usage

go

可以直接執(zhí)行 go version

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 今天感恩節(jié)哎,感謝一直在我身邊的親朋好友。感恩相遇!感恩不離不棄。 中午開(kāi)了第一次的黨會(huì),身份的轉(zhuǎn)變要...
    余生動(dòng)聽(tīng)閱讀 10,911評(píng)論 0 11
  • 彩排完,天已黑
    劉凱書(shū)法閱讀 4,497評(píng)論 1 3
  • 表情是什么,我認(rèn)為表情就是表現(xiàn)出來(lái)的情緒。表情可以傳達(dá)很多信息。高興了當(dāng)然就笑了,難過(guò)就哭了。兩者是相互影響密不可...
    Persistenc_6aea閱讀 129,836評(píng)論 2 7

友情鏈接更多精彩內(nèi)容