终端输入命令,总提示command not found一了百了解决方案

终端输入命令,总提示command not found一了百了解决方案

背景:

系统:Max OS X
原因:最近在学go,在安装了govendor后,使用该命令提示:govendor: command not found,这次打算把这一块的前因后果捋一下。

先说说 Mac OS 里对环境变量文件的加载顺序:

/etc/profile 
/etc/paths 
~/.bash_profile

/etc/profile包含Linux系统范围的环境和启动程序。所有使用bash,ksh和sh shell的用户都可以使用它。通常用于设置PATH变量,用户限制和其他用户设置。
终端输入命令,总提示command not found一了百了解决方案_第1张图片
/etc/paths包含一些shell的路径,启动终端的时候会去执行该程序。
在这里插入图片描述
最后是~/.bash_profile,如果在找不到 ~/.bash_profile 还会继续按照下方的顺序查找配置文件【不常用,可忽略】

~/.bash_login 
~/.profile 
~/.bashrc

解决终端命令丢失 command not found 可以参考如下步骤:

1.检查 ~/.bash_profile 文件是否存在,如果存在则重命名,如 mv ~/.bash_profile ~/bash_profile,然后注销输入密码,打开终端尝试 ls、source 等命令。
使用下面命令增加环境变量:

vim ~/.bash_profile

在打开的文件中增加环境变量,然后重启终端

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

最后输入govendor命令即可使用。

govendor -version

2.步骤1基本就解决了系统命令问题,如果还存在,仔细检查 /etc/paths 文件,里面默认包含如下内容:

/bin
/sbin
/usr/local/bin
/usr/local/sbin // 这个默认是没有的,建议加上
/usr/bin
/usr/sbin

【注意顺序非常重要,如果有通过 brew 安装 PHP 等组件,/usr/local/bin 和 /usr/local/sbin 在 /usr/bin 和 /usr/sbin 之后的话,则后面含有相同的命令不会覆盖之前的命令,以前者为准。】

3.进入 /etc/paths.d,看看有没有最近修改的文件,同样的仔细想想 .bash_profile 最近有没有修改过,如果有,/etc/paths.d 里的某个文件先复制一份到桌面并删除; .bash_profile 则删除或注释掉(行前加 # 为注释)近期添加的内容。注销或终端执行 source ~/.bash_profile 生效。【建议注销】

你可能感兴趣的:(Linux&shell)