Localizando o arquivo que contém o caminho adicionado ao $ PATH

1

Um comando foi adicionado ao $ PATH, mas não consigo encontrar o local em que o caminho foi adicionado ao $ PATH. Por favor, veja que which mostra o caminho completo para o arquivo binário, no entanto, olhando para .bashrc , .bash_profile , /etc/profile e / etc/profile.d não retorna nenhum resultado. Por favor, note que os jogos no grep se referem a outra coisa.

Como posso encontrar onde esse caminho foi adicionado ao $ 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

Por favor veja também o $ 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
    
por mahmood 13.07.2016 / 14:50

3 respostas

1

A máquina em que você está trabalhando parece ter algum tipo de sistema de módulos para disponibilizar dinamicamente o software, possivelmente o sistema "Módulos" (link atualmente morto porque o SourceForge está inativo).

Eu estou em um sistema que usa módulos também:

$ 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

Os módulos estão sendo procurados nos diretórios listados em $LMOD_DEFAULT_MODULEPATH . Em um desses diretórios, encontro o arquivo openmpi/default.lua . Este arquivo é um script Lua.

No script:

local mpipath= "/opt/openmpi/" .. useVer .. usedComp .. compVer
prepend_path("PATH",            pathJoin(mpipath, "bin"))

(estas não são linhas consecutivas no script)

Observação: eu nunca usei os Módulos, portanto, não sei se a configuração no meu sistema é de módulos funcionando como padrão ou se é uma versão local altamente modificada.

Editar: ou não é o mesmo, ou uma versão altamente personalizada. O pacote de módulos usa MODULESHOME (o padrão é /usr/local/Modules/3.2.7 de acordo com o manual ). A mecânica seria a mesma. Há um módulo em $MODULESHOME/modulefiles em algum lugar que definirá o PATH para o que você está vendo quando digita module load openmpi (ou se um script de inicialização do shell faz isso para você).

    
por 13.07.2016 / 15:37
0

Você pode verificar o conteúdo de / etc / environment.

Este arquivo é especificamente destinado a configurações de variáveis de ambiente em todo o sistema. Não é um arquivo de script, mas consiste em expressões de atribuição, uma por linha.

    
por 13.07.2016 / 14:53
0

Eu realmente não entendi o que você está perguntando desde que você não nos disse qual comando foi adicionado. Em qualquer caso, eu uso a seguinte função para pesquisar os suspeitos usuais:

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
}

Em outras palavras, se você estiver procurando por openmpi , execute:

grep -H "openmpi" ~/.bashrc ~/.profile ~/.bash_profile ~/bash.login ~/.bash_aliases \
   /etc/bash.bashrc /etc/profile /etc/profile.d/* /etc/environment 2>/dev/null

Observe que isso não o encontrará se estiver sendo configurado em um dos arquivos originados por qualquer um dos itens acima. Para obter uma lista de arquivos originados, tente:

grep -EH "\. |source " ~/.bashrc ~/.profile ~/.bash_profile ~/bash.login \
~/.bash_aliases    /etc/bash.bashrc /etc/profile /etc/profile.d/* \
/etc/environment 2>/dev/null

Isso retornará uma lista de arquivos originados pelos seus arquivos de inicialização. Você precisará então procurar por aqueles para sua string também.

    
por 13.07.2016 / 14:59