Bashスクリプトを実行するときにモジュールをロードできず、インポート時にのみロードできるのはなぜですか?

Bashスクリプトを実行するときにモジュールをロードできず、インポート時にのみロードできるのはなぜですか?

使っています基準寸法python/2.7.2モジュールとしてインストールしたシステムのパッケージを制御します。python_exe.py単純な「ドライブ」スクリプトから呼び出す単純なPython実行可能ファイルがありますrunit.shrunit.shスクリプトは次のとおりです。

#!/bin/bash
module load python/2.7.2
arg1=myarg1
arg2=15
arg3=$5
/path/to/python_exe.py -a $arg1 -b $arg2 -c $arg3

ただし、実行すると、./runit.sh「モジュール:コマンドが見つかりません」というメッセージが表示されます。ただし、これによりsource runit.shモジュールが正しくロードされます。なぜこれですか?

ベストアンサー1

moduleコマンドがエイリアスまたはシェル関数であるため(パッケージの初期化「存在する モジュール(1))。と言うと、インタラクティブシェルに直接コマンドを入力するのとsource runit.sh同じです。moduleしかし、あなたが言うとき./runit.sh、あなたは新しい非対話型シェルを実行しています。非対話型シェルには通常、標準エイリアスとシェル機能が設定されていません。

モジュール(1)「モジュールパッケージと基準寸法シェル固有の初期化スクリプトがシェルに渡されると、コマンドは初期化されます。このスクリプトは基準寸法エイリアスまたはシェル関数でコマンド..."スクリプトでmoduleコマンドを実行する必要がある場合は、moduleスクリプト内でコマンドとその初期化スクリプトを見つけます。source

おすすめ記事