前言
前段时间入了fish-shell的坑,将其作为默认的shell,发现很多环境变量都失效了,比如$PATH
,$GOPATH
等等,这里记录一下解决方案。
标题党一下,互联网上很多文章写的都是垃圾。要么互相复制,要么没有彻底解决问题。
问题
将fish-shell
作为默认shell后,重启终端,很多命令都无法使用,报command not found
。甚至很多系统自带的命令也无法使用,比如ls
,rm
, vim
等等。
这导致我甚至没有办法将fish的配置文件删除或修改回原来的样子,因为rm
, vim
, touch
等都无法使用。
目前为止我的终端彻底成为了摆设。
解决方案
分析一下,很多命令无法使用。那么大概率是$PATH
变量的问题。
首先,使用echo $PATH
查看一下$PATH
的值,发现/usr/local/bin
和/usr/bin
都不在$PATH
中。
使用绝对路径,来调用vim
命令修改配置文件:
|
|
发现配置文件内有这么一行:
|
|
-e
参数代表将$PATH
设置为空,所以导致了这个问题的根源。
加上这行配置是因为,将fish-shell
置为默认shell后,要重新设置$PATH
。直接设置的话,终端会报$PATH
重复设置的错误,类似于Golang里面的map并发读写错误。所以才加上了清除$PATH
的命令。
问题的原因出现了,我清除$PATH
之后,没有将/usr/local/bin
和/usr/bin
等系统级路径加入到$PATH
中。
这里将几个路径加入进去后,问题就解决了。附上我的配置文件:
|
|
-U
参数代表全局变量,可以在不同的fish进程中使用。-x
参数类似与bash中的export
,代表将变量导出到子进程中。
这样启动终端后,就可以正常使用了。