onde é o “módulo” um comando vindo - aka porque ele não aparece no pseudônimo?

2

Considere o seguinte:

$ module
cmdModule.c(166):ERROR:11: Usage is 'module command  [arguments ...] '

  Modules Release 3.2.6 2007-02-14 (Copyright GNU GPL v2 1991):

  Usage: module [ switches ] [ subcommand ] [subcommand-args ]

Switches:
(...omissis...)

$ which module
no module in (...long list of my path)

$ alias
alias cp='cp -i'
alias h='history | grep '
alias ls='/usr/local/bin/ls --color=always'
alias mv='mv -i'
alias rm='rm -i'
alias vi='vim'

$

É evidente que o comando module está lá e está disponível para execução, mas não consigo encontrá-lo (facilmente). Cavando um pouco, eu encontrei no sistema, e notei que é um alias para

bin/modulecmd $SHELL

no caminho de instalação do módulo.

Mas por que ele não aparece na lista de alias e porque - mesmo que não apareça - funciona?

    
por Davide 22.10.2009 / 19:37

2 respostas

2

Editar : Gostaria de saber se algo complicado está sendo feito no alias. Tente isto:

alias|hd

Editar 2:

O motivo pelo qual sugeri o acima é que é possível ocultar aliases. Veja minha pergunta e responda aqui para detalhes.

Resposta original:

Experimente type -a module , é mais abrangente.

Além disso, se for uma função, você pode ver sua definição usando isto:

declare -f module

e você precisaria de grep desses arquivos, além de qualquer um que eles tenham, além de qualquer que eu tenha deixado de fora, para descobrir onde ele está definido:

  • / etc / profile
  • /etc/bash.bashrc
  • ~ / .profile
  • ~ / .bashrc
  • ~ / .bash_profile
  • ~ / .bash_login
por 22.10.2009 / 20:13
0

É uma função.

E vem de aqui . É bastante conveniente gerenciar variáveis de ambiente.

    
por 22.10.2009 / 20:24