已将命令添加到 $PATH,但我找不到该路径已添加到 $PATH 的位置。请参阅which
显示二进制文件的完整路径,但是查看.bashrc
、.bash_profile
和/etc/profile
/etc/profile.d
不会返回结果。请注意,grep 中的匹配项与其他内容相关。
如何找到该路径已添加到 $PATH 中的位置?
# which mpicc
/opt/openmpi/bin/mpicc
# grep -r openmpi .bash_profile
# grep -r openmpi .bashrc
alias of230='module load openmpi-x86_64; source /export/apps/mechanics/OpenFOAM/OpenFOAM-2.3.0/etc/bashrc WM_NCOMPPROCS=4 foamCompiler=ThirdParty WM_COMPILER=Gcc48 WM_MPLIB=SYSTEMOPENMPI'
# grep -r openmpi /etc/profile
alias of230='module load openmpi-x86_64; source /export/apps/mechanics/OpenFOAM/OpenFOAM-2.3.0/etc/bashrc WM_NCOMPPROCS=4 foamCompiler=ThirdParty WM_COMPILER=Gcc48 WM_MPLIB=SYSTEMOPENMPI'
# grep -r openmpi /etc/profile.d/
/etc/profile.d/rocks-hpc.csh:# Add default module definition for rocks-openmpi.
/etc/profile.d/rocks-hpc.csh:# Load the rocks-openmpi module if ROCKS_USER_MODULE_DEF not defined
/etc/profile.d/rocks-hpc.csh: module -s add rocks-openmpi
/etc/profile.d/rocks-hpc.sh:# load the defaults rocks-openmpi module
/etc/profile.d/rocks-hpc.sh:# Add default module definition for rocks-openmpi.
/etc/profile.d/rocks-hpc.sh: module add rocks-openmpi 2>/dev/null
另请参阅 $PATH
# echo $PATH
/opt/openmpi/bin:/usr/lib64/qt-3.3/bin:/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/opt/bio/ncbi/bin:/opt/bio/mpiblast/bin:/opt/bio/EMBOSS/bin:/opt/bio/clustalw/bin:/opt/bio/tcoffee/bin:/opt/bio/hmmer/bin:/opt/bio/phylip/exe:/opt/bio/mrbayes:/opt/bio/fasta:/opt/bio/glimmer/bin:/opt/bio/glimmer/scripts:/opt/bio/gromacs/bin:/opt/bio/gmap/bin:/opt/bio/tigr/bin:/opt/bio/autodocksuite/bin:/opt/bio/wgs/bin:/opt/eclipse:/opt/ganglia/bin:/opt/ganglia/sbin:/usr/java/latest/bin:/opt/maven/bin:/opt/maui/bin:/opt/torque/bin:/opt/torque/sbin:/opt/pdsh/bin:/opt/rocks/bin:/opt/rocks/sbin:/opt/condor/bin:/opt/condor/sbin:/opt/gridengine/bin/linux-x64:/export/apps/mathematics/matlab2012a/bin:/opt/maui/bin:/export/apps/mathematics/matlab2012a/bin:/export/apps/mathematics/Mathematica/10.3/Executables:/usr/local/chem/g09-64-D01:/home/mahmood/bin:/opt/maui/bin:/opt/torque/bin:/opt/torque/sbin
答案1
您正在使用的机器似乎有某种模块系统,可以动态地提供软件,可能是“模块”系统(由于 SourceForge 已关闭,链接目前已失效)。
我的系统也使用模块:
$ type mpicc
-ksh93: whence: mpicc: not found
$ module load openmpi
$ type mpicc
mpicc is a tracked alias for /opt/openmpi/1.7.5gcc4.4/bin/mpicc
正在 中列出的目录中查找模块$LMOD_DEFAULT_MODULEPATH
。在这些目录之一中,我找到了文件openmpi/default.lua
.该文件是一个Lua脚本。
在脚本中:
local mpipath= "/opt/openmpi/" .. useVer .. usedComp .. compVer
prepend_path("PATH", pathJoin(mpipath, "bin"))
(这些不是脚本中连续的行)
注意:我自己从未使用过模块,所以我不知道我的系统上的设置是否是默认运行的模块,或者是否是经过大量修改的本地版本。
编辑:它要么不一样,要么是高度定制的版本。 Modules 包使用MODULESHOME
(默认为/usr/local/Modules/3.2.7
根据手册)。机制是一样的。某处有一个模块$MODULESHOME/modulefiles
可以将 设定PATH
为您键入时所看到的内容module load openmpi
(或者如果 shell 初始化脚本为您执行此操作)。
答案2
您可以检查/etc/environment的内容。
该文件专门用于系统范围的环境变量设置。它不是一个脚本文件,而是由每行一个赋值表达式组成。
答案3
我不太明白你在问什么,因为你没有告诉我们添加了什么命令。无论如何,我使用以下函数来搜索常见的嫌疑人:
grep_bash(){
grep -H "$@" ~/.bashrc ~/.profile ~/.bash_profile ~/bash.login ~/.bash_aliases \
/etc/bash.bashrc /etc/profile /etc/profile.d/* /etc/environment 2>/dev/null
}
换句话说,如果您正在寻找openmpi
,请运行:
grep -H "openmpi" ~/.bashrc ~/.profile ~/.bash_profile ~/bash.login ~/.bash_aliases \
/etc/bash.bashrc /etc/profile /etc/profile.d/* /etc/environment 2>/dev/null
请注意,如果在其中一个文件中设置它,则不会找到它来源通过上述任何一项。要获取源文件列表,请尝试:
grep -EH "\. |source " ~/.bashrc ~/.profile ~/.bash_profile ~/bash.login \
~/.bash_aliases /etc/bash.bashrc /etc/profile /etc/profile.d/* \
/etc/environment 2>/dev/null
这将返回初始化文件来源的文件列表。然后,您还需要在其中搜索您的字符串。