web-dev-qa-db-ja.com

「どれ」は実行しても実行可能ファイルの場所を見つけることができません

バックグラウンド

サーバーにログインして科学計算を行います。 「Scientific Linux version 7.4」を実行します。

別のソフトウェアにアクセスするには、「モジュールロードx」のようなコマンドを実行する必要があります。たとえば、pythonを使用するには、「モジュールロードpython」と書く必要があります。このモジュールシステムについてはよくわかりませんが、環境変数を変更するだけです。 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を実行することはできません。しかし最近、これが変更されたことに気付き、pythonモジュールをロードせずにcondaを実行できます。これは混乱したので、実行中の実行可能ファイルを見つけることができるかどうかを確認するために「which conda」と入力しましたが、実行すると、PATH変数のいずれかのディレクトリに「condaが見つかりません」と表示されます。

まだcondaを実行できるにもかかわらず、condaの実行ファイルを見つけることができないのはどうしてですか?

5
Onye

おそらく、エイリアスまたは「conda」と呼ばれるシェル関数を持っています。タイプ

type conda

itの内容を確認してください。

このモジュールシステムについてはあまり知りませんが、私が言えることは、いくつかの環境変数を変更することだけです。

それは赤い旗です:Posixオペレーティングシステムでは、実行可能ファイルはそれ自体とそれ自体が開始した実行可能ファイル以外の環境を変更できません。

したがって、モジュールシステムできませんは実行可能ファイルを使用して実装され、whichは実行可能ファイルのみを検索します。

代わりに、コマンドはシェルのサブシステム(シェル関数またはエイリアス)である必要があります。

type condatype moduleを試して、シェルにそれらが何であるかを教えてください。

1
user394689