“模块”命令来自哪里 - 也就是为什么它没有出现在别名中?

“模块”命令来自哪里 - 也就是为什么它没有出现在别名中?

考虑以下:

$ 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

在模块安装路径中。

但是为什么它没有出现在别名列表中,以及为什么 - 即使它没有出现 - 它也能起作用?

答案1

编辑:我想知道别名中是否有一些棘手的事情。试试这个:

alias|hd

编辑2:

我建议上述做法的原因是可以隐藏别名。请参阅我的问题和答案这里了解详情。


原始答案:

试试看type -a module更全面。

另外,如果它是一个函数,你可以使用以下命令查看它的定义:

declare -f module

并且您需要grep这些文件,加上它们提供的任何文件,加上我遗漏的任何文件,来找到它的定义位置:

  • /etc/配置文件
  • /etc/bash.bashrc
  • 〜/ .profile
  • ~/.bashrc
  • 的〜/ .bash_profile
  • 〜/ .bash_login

答案2

这是一个功能。

它来自于这里. 管理环境变量还是挺方便的。

相关内容