명령이 $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"))
(스크립트에서는 연속된 줄이 아닙니다)
참고: 저는 이 모듈을 직접 사용해 본 적이 없기 때문에 시스템의 설정이 기본적으로 실행되는 모듈인지, 아니면 크게 수정된 로컬 버전인지 모르겠습니다.
편집: 다르거나 고도로 맞춤화된 버전입니다. 사용할 모듈 패키지 MODULESHOME
(기본값은/usr/local/Modules/3.2.7
매뉴얼에 따르면). 메커니즘은 동일합니다. 입력할 때 표시되는 $MODULESHOME/modulefiles
설정 (또는 쉘 초기화 스크립트가 이를 수행하는 경우) 을 설정하는 모듈이 어딘가에 있습니다 .PATH
module load openmpi
답변2
/etc/environment.conf의 내용을 확인할 수 있습니다.
이 파일은 시스템 전체의 환경 변수 설정 전용입니다. 스크립트 파일은 아니지만 한 줄에 하나의 할당 표현식으로 구성됩니다.
답변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
그러면 초기화 파일이 제공된 파일 목록이 반환됩니다. 그런 다음 그 안에 있는 문자열도 검색해야 합니다.