Linux 环境 profile 与 bashrc 的区别

Linux系统下经常需要设置环境变量、命令别名等会涉及到/etc/profile~/.profile~/.bashrc文件,这些文件区别不大可,但是越相近越容易混淆。

简单来说他们的区别:

  1. /etc/profile 全集环境变量,对所有用户有效。登入系统时会首先读取这个文件。根据内容会读取/etc/profile.d/etc/inputrc目录中的设定文档。
  2. ~/.profile 可以用来设定用户的路径及环境变量等。只在登陆系统时才会执行一次。

  3. ~/.bashrc 用来设定路径、命令别名等,没事执行shell脚本时都会执行。

设置完成可以通过指令source .bashrc 或者source .profile来使变量生效。可以通过env命令查看系统变量。

Golang 环境变量设置

每次安装Golang都要重新设置环境变量,也仅仅是盲目的照搬没有过深入的思考。趁着这次重装Gentoo系统,集中搜集整理出相关信息,方便将来查阅。

Golang 的环境主要有3个:

设置$GOROOT

表示Go的安装位置,Linux一般位于/usr/local/go (gentoo 系统位于/usr/lib/go);Windows 系统会自动安装在C:/go 目录下

自动安装

自动安装的话,默认$GOROOT已经设置完成。

  1. Linux下使用包管理器自动安装,例如gentoo系统使用root # emerge -ask dev-lang/go
  2. Windows系统下下载.msi 自安装包

使用源码安装

如果是使用源码安装那么要手动设置环境变量:
Linux 下编辑文件:/etc/profile (对系统所有用户有效); $HOME/.profile (仅对当前用户有效)

增加如下行:

export PATH=$PAHT:/usr/local/go/bin

如果是安装在其他位置,例如,安装在 $HOME 文件夹下则需要如下设置:

export GOROOT=HOME/go export PATH=PATH:$GOROOT/bin

设置$GOPATH

GOPATH为用户的工作目录,里面包含三个文件夹:src、pkg、bin

设置方式与$GOROOT相似:

$HOME/.profile 文件中增加以下内容:

export GOPATH=HOME/goproject export PATH=PATH:$GOPATH/bin

设置$GOBIN

编译的二进制文件存放位置。上一节提到了$GOPATH 的目录中有bin文件夹,其实默认情况下即是$GOBIN 的路径,$GOBIN 的路径为:$GOPATH/bin

如果无特殊需求不用单独设置$GOBIN

结果校验

完成设置后通过指令source .profile来使环境变量生效。

通过go env命令来查看Golang环境变量。系统的变量效果可以通过命令env来查看。

注:有些读者在看到文章中提到的环境变量的设置文件是$HOME/.profile 可能会与以往的经验相冲突,因为有些书籍或文章中提到的是$HOME/.bashrc ,不过不用担心,效果差别不大。详细区别请参看文章《Linux下profile与bashrc的区别》。