查找包含添加到 $PATH 的路径的文件

查找包含添加到 $PATH 的路径的文件

已将命令添加到 $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

这将返回初始化文件来源的文件列表。然后,您还需要在其中搜索您的字符串。

相关内容