我正在升级到 maven 3,但遇到了一个小问题,maven 2 莫名其妙地出现在我的PATH
变量中。我检查了~/.bashrc
、~/.profile
、/etc/bash.bashrc
、/etc/environment
,/etc/profile
但找不到任何地方。我遗漏了什么?
答案1
从man bash
:
当 bash 作为交互式登录 shell 或使用 --login 选项作为非交互式 shell 调用时,它首先从文件 /etc/profile 中读取并执行命令(如果该文件存在)。读取该文件后,它会按顺序查找 ~/.bash_profile、~/.bash_login 和 ~/.profile,然后从第一个存在且可读的文件中读取并执行命令。启动 shell 时可以使用 --noprofile 选项来禁止此行为。
当启动非登录 shell 的交互式 shell 时,如果 /etc/bash.bashrc 和 ~/.bashrc 存在,bash 将从这些文件读取并执行命令。可以使用 --norc 选项禁止此操作。--rcfile file 选项将强制 bash 从 file 而不是 /etc/bash.bashrc 和 ~/.bashrc 读取并执行命令。
由于您已登录到交互式非登录 shell,因此要查找分配的文件PATH
是/etc/bash.bashrc
,~/.bashrc
并且也是在,因为它是声明系统范围环境变量的默认位置。您还应该检查登录到交互式登录 shell 时获取的目录,以确保其中/etc/environment
没有引用或指针需要更改。PATH
如果你没有找到任何关于 的引用PATH
,maven-2
那么这些文件中一定有某些东西导致了 的PATH
改变,也就是说,这些文件中的某些东西触发了其他东西,从而改变了PATH
。如果不检查文件内容,很难判断。
如果你想maven-2
从中删除PATH
:
/home/elpinguino/scala-2.10.5/bin:/home/elpinguino/bin:/usr/local/sbin
:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
:/opt/apache-maven-2.2.1/bin:/bin:/bin:/opt/apache-maven-3.3.3/bin
您可以删除目录/opt/apache-maven-2.2.1
以便PATH
找不到可执行文件,或者PATH
再次声明环境变量并丢弃/opt/apache-maven-2.2.1/bin
目录并将其放在末尾~/.bashrc
。