1.-bash: go: 未找到命令问题

方法1:(亲测可行)

echo $PATH //查看go 命令路径是否存在

golang 语言学习笔记_mongodb

将go安装路径添加到/etc/profile  

sudo vi /etc/profile

golang 语言学习笔记_mongodb_02

最后关键一步不能丢:加载配置文件,使之生效

source /etc/profile

添加后效果:

golang 语言学习笔记_golang_03 golang 语言学习笔记_学习_04


方法2:

首先,查看$PATH中是否包含了这些命令。

$PATH:决定了shell到哪些目录中去寻找命令或程序,PATH值是一系列的目录。当运行程序时,linux到这些目录下搜索进行编译链接。

格式:

PATH = $PATH:<PATH1>:<PATH2>:<PATH3>:...:<PATH N>

可以将自己指定的路径加到PATH中,中间用冒号":"隔开。环境变量更改后,会在用户下次登录的时候生效;若想立即生效,则需要执行:

$ source .bash_profile

查看PATH值

export  

或者

echo $PATH
[vagrant@bogon ~]$ export
declare -x GOBIN="/home/vagrant/go/bin"
declare -x GOPATH="/home/vagrant/go"
declare -x HISTCONTROL="ignoredups"
declare -x HISTSIZE="1000"
declare -x HOME="/home/vagrant"
declare -x HOSTNAME="bogon"
declare -x LANG="zh_CN.UTF-8"
declare -x LESSOPEN="||/usr/bin/lesspipe.sh %s"
declare -x LOGNAME="vagrant"
declare -x LS_COLORS="rs=0:di=38;5;27:ln=38;5;51:mh=44;38;5;15:pi=40;38;5;11:so=38;5;13:do=38;5;5:bd=48;5;232;38;5;11:cd=48;5;232;38;5;3:or=48;5;232;38;5;9:mi=05;48;5;232;38;5;15:su=48;5;196;38;5;15:sg=48;5;11;38;5;16:ca=48;5;196;38;5;226:tw=48;5;10;38;5;16:ow=48;5;10;38;5;21:st=48;5;21;38;5;15:ex=38;5;34:*.tar=38;5;9:*.tgz=38;5;9:*.arc=38;5;9:*.arj=38;5;9:*.taz=38;5;9:*.lha=38;5;9:*.lz4=38;5;9:*.lzh=38;5;9:*.lzma=38;5;9:*.tlz=38;5;9:*.txz=38;5;9:*.tzo=38;5;9:*.t7z=38;5;9:*.zip=38;5;9:*.z=38;5;9:*.Z=38;5;9:*.dz=38;5;9:*.gz=38;5;9:*.lrz=38;5;9:*.lz=38;5;9:*.lzo=38;5;9:*.xz=38;5;9:*.bz2=38;5;9:*.bz=38;5;9:*.tbz=38;5;9:*.tbz2=38;5;9:*.tz=38;5;9:*.deb=38;5;9:*.rpm=38;5;9:*.jar=38;5;9:*.war=38;5;9:*.ear=38;5;9:*.sar=38;5;9:*.rar=38;5;9:*.alz=38;5;9:*.ace=38;5;9:*.zoo=38;5;9:*.cpio=38;5;9:*.7z=38;5;9:*.rz=38;5;9:*.cab=38;5;9:*.jpg=38;5;13:*.jpeg=38;5;13:*.gif=38;5;13:*.bmp=38;5;13:*.pbm=38;5;13:*.pgm=38;5;13:*.ppm=38;5;13:*.tga=38;5;13:*.xbm=38;5;13:*.xpm=38;5;13:*.tif=38;5;13:*.tiff=38;5;13:*.png=38;5;13:*.svg=38;5;13:*.svgz=38;5;13:*.mng=38;5;13:*.pcx=38;5;13:*.mov=38;5;13:*.mpg=38;5;13:*.mpeg=38;5;13:*.m2v=38;5;13:*.mkv=38;5;13:*.webm=38;5;13:*.ogm=38;5;13:*.mp4=38;5;13:*.m4v=38;5;13:*.mp4v=38;5;13:*.vob=38;5;13:*.qt=38;5;13:*.nuv=38;5;13:*.wmv=38;5;13:*.asf=38;5;13:*.rm=38;5;13:*.rmvb=38;5;13:*.flc=38;5;13:*.avi=38;5;13:*.fli=38;5;13:*.flv=38;5;13:*.gl=38;5;13:*.dl=38;5;13:*.xcf=38;5;13:*.xwd=38;5;13:*.yuv=38;5;13:*.cgm=38;5;13:*.emf=38;5;13:*.axv=38;5;13:*.anx=38;5;13:*.ogv=38;5;13:*.ogx=38;5;13:*.aac=38;5;45:*.au=38;5;45:*.flac=38;5;45:*.mid=38;5;45:*.midi=38;5;45:*.mka=38;5;45:*.mp3=38;5;45:*.mpc=38;5;45:*.ogg=38;5;45:*.ra=38;5;45:*.wav=38;5;45:*.axa=38;5;45:*.oga=38;5;45:*.spx=38;5;45:*.xspf=38;5;45:"
declare -x MAIL="/var/spool/mail/vagrant"
declare -x OLDPWD="/usr/local/go"
declare -x PATH="/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/usr/local/nginx/sbin:/usr/local/php7/bin:/usr/local/mongodb/bin:/home/vagrant/.local/bin:/home/vagrant/bin:/home/vagrant/go/bin:/home/vagrant/.local/bin:/home/vagrant/bin:/home/vagrant/.local/bin:/home/vagrant/bin:/usr/local/nginx/sbin:/usr/local/php7/bin:/usr/local/mongodb/bin:/usr/local/go/bin"
declare -x PWD="/home/vagrant"
declare -x SHELL="/bin/bash"
declare -x SHLVL="1"
declare -x SSH_CLIENT="10.0.2.2 49665 22"
declare -x SSH_CONNECTION="10.0.2.2 49665 10.0.2.15 22"
declare -x SSH_TTY="/dev/pts/0"
declare -x TERM="xterm-256color"
declare -x USER="vagrant"
declare -x XDG_RUNTIME_DIR="/run/user/1000"
declare -x XDG_SESSION_ID="2"
[vagrant@bogon ~]$ echo $PATH
/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/usr/local/nginx/sbin:/usr/local/php7/bin:/usr/local/mongodb/bin:/home/vagrant/.local/bin:/home/vagrant/bin:/home/vagrant/go/bin:/home/vagrant/.local/bin:/home/vagrant/bin:/home/vagrant/.local/bin:/home/vagrant/bin

 ​添加$PATH环境变量:

[vagrant@bogon go]$ export GOPATH=/home/vagrant/go
[vagrant@bogon go]$ export GOBIN=$GOPATH/bin
[vagrant@bogon go]$ export PATH=$PATH:$GOBIN
[vagrant@bogon go]$ source ~/.bash_profile

这种方法添加PATH 在终端关闭后会消失。所有建议通过上面第一种方式​编辑/etc/profile 修改PATH​,也可修改​/home目录下的 .bashrc


$PATH下目录简介

    PATH中主要有以下四个目录:

    ​/bin, /usr/bin, /sbin, /usr/sbin

 主要存放的东西:

./bin:

bin为binary的简写主要放置一些系统的必备执行档案。如:cat,cp, chmod df, dmesg, gzip, kill, ls, mkdir, more, mount, rm, su, tar 等。

/usr/bin:

主要放置一些应用软体工具的必备执行档例。如:c++、g++、gcc、chdrv、diff、dig、du、eject、elm、free、gnome*、 gzip、htpasswd、kfm、ktop、last、less、locale、m4、make、man、mcopy、ncftp、 newaliases、nslookup passwd、quota、smb*、wget等。 

/sbin:

主要放置一些系统管理的必备程式例。如:cfdisk、dhcpcd、dump、e2fsck、fdisk、halt、ifconfig、ifup、 ifdown、init、insmod、lilo、lsmod、mke2fs、modprobe、quotacheck、reboot、rmmod、 runlevel、shutdown等。 

/usr/sbin:

放置一些网路管理的必备程式例。如:dhcpd、httpd、imap、in.*d、inetd、lpd、named、netconfig、nmbd、samba、sendmail、squid、swap、tcpd、tcpdump等。


2.GOROOT 与 GOPATH 区别

GOROOT​ 定义为指定安装 GO 的根目录。在之前的 Makefile 中,引入其他 Makefile 时,将它作为基础路径。而且,Go 1.0 之后,go tool 利用它查找 Go 编译器(保存在 $GOROOT/pkg/tool/$GOOS_$GOARCH)和标准库(在 $GOROOT/pkg/$GOOS_$GOARCH)。

如果你是一名 Java 开发者,可以将 GOROOT 理解为 JAVA_HOME。源码编译 Go,GOROOT 将自动发现(all.bash 的上级目录),然后设置到 go 工具链。

GOPATH​:为我们开发常用的目录,建议不要和Go的安装目录一致,在该文件夹下又有三个文件夹:src、pkg、bin,这里src是自己新建的,pkg和bin是后面生成的。

src:主要存放我们的源代码

bin:存放编译后生成的可执行文件,可以自己执行

pkg: 编译后生成的文件(.a文件)(非main函数的文件在go install后生成)

GOBIN​:是GOPATH下的bin目录

PATH​:环境变量,需要go-bin目录加入到path路径下,生成可执行文件就可以直接运行了。

如下命令查看:

$ echo $GOROOT

$ go env

/home/dfc/go

参考:Linux下提示命令找不到:bash:command not found - 风声风语