在哪里是“模块”一个命令来自 – 也就是为什么它不显示在别名?

考虑以下:

$ 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' $ 

显然,模块命令在那里,可以执行,但我找不到(很容易)。 挖一点点,我发现它在系统上,我注意到这是一个别名

 bin/modulecmd $SHELL 

在模块安装path中。

但为什么它不出现在别名列表中,为什么 – 即使它没有出现 – 它的工作?

编辑 :我不知道是否有一些棘手的事情正在做别名。 尝试这个:

 alias|hd 

编辑2:

我build议上述的原因是可以隐藏别名。 有关详细信息,请参阅我的问题和答案。


原始答案:

尝试type -a module更全面的type -a module

另外,如果它是一个函数,你可以看到它的定义使用这个:

 declare -f module 

你需要grep这些文件,加上它们的源代码,以及我遗漏的任何东西,find它的定义:

  • / etc / profile文件
  • /etc/bash.bashrc
  • 〜/ .profile文件
  • 在〜/ .bashrc
  • 在〜/ .bash_profile
  • 〜/ .bash_login文件

这是一个function。

它来自这里 。 pipe理环境variables非常方便。