背景
我登录服务器进行科学计算。它运行“Scientific Linux 版本 7.4”。
为了访问不同的软件,我必须运行“module load x”之类的命令。例如,要使用 python,我需要编写“module load python”。我对这个模块系统了解不多,但据我所知,它只是修改了一些环境变量。输入“module show python”显示
module-whatis This module sets up PYTHON 3.6 in your environment.
conflict python
append-path MODULEPATH /global/software/sl-7.x86_64/modfiles/python/3.6
setenv PYTHON_DIR /global/software/sl-7.x86_64/modules/langs/python/3.6
prepend-path PATH /global/software/sl-7.x86_64/modules/langs/python/3.6/bin
prepend-path CPATH /global/software/sl-7.x86_64/modules/langs/python/3.6/include
prepend-path FPATH /global/software/sl-7.x86_64/modules/langs/python/3.6/include
prepend-path INCLUDE /global/software/sl-7.x86_64/modules/langs/python/3.6/include
prepend-path LIBRARY_PATH /global/software/sl-7.x86_64/modules/langs/python/3.6/lib
prepend-path PKG_CONFIG_PATH /global/software/sl-7.x86_64/modules/langs/python/3.6/lib/pkgconfig
prepend-path MANPATH /global/software/sl-7.x86_64/modules/langs/python/3.6/share/man
当我加载 python 时,我还可以访问 conda (其可执行文件位于 /global/software/sl-7.x86_64/modules/langs/python/3.6/bin 中)。
问题
通常,如果不先加载 python 模块,我就无法运行 conda。但最近我注意到这种情况发生了变化,现在我可以运行 conda 而无需加载 python 模块。这让我很困惑,所以我输入“which conda”来查看是否可以找到正在运行的可执行文件,但是当我这样做时,它说在我的 PATH 变量上的任何目录中“没有找到 conda”。
尽管我仍然可以运行 conda,但“which”怎么可能找不到 conda 可执行文件?
答案1
您可能有一个名为“ ”的别名或 shell 函数conda
。类型
type conda
看看什么它说。
答案2
我对这个模块系统了解不多,但据我所知,它只是修改了一些环境变量。
这是一个危险信号:在 Posix 操作系统中,任何可执行文件都不能更改除自身及其自身启动的可执行文件之外的任何环境。
所以你的模块系统不能使用可执行文件实现,并且which
仅查找可执行文件。
相反,这些命令必须是 shell 的某个子系统:shell 函数或别名。
尝试type conda
和/或type module
让 shell 告诉您它们是什么。