企業クラスタにログインするたびにKerberosチケットを受け取り、ジョブを送信しようとしましたが、Spark-ubmitが見つかりません。
-bash-4.1$ ./pipeline.runtime/scripts/vpspark-submit.sh crow-env/ /user/gsamaras/crow_spm-1.0.2.3.tar.gz --properties-file $SPARK_CONF_PROPERTIES --num-executors 1 foo.py
./pipeline.runtime/scripts/vpspark-submit.sh: line 51: spark-submit: command not found
しかし、.bashrcを取得すると正常に動作します。
>> cat .bashrc
[ -f /etc/bashrc ] && . /etc/bashrc
export PATH=${SPARK_HOME}/bin:$PATH
export SPARK_CONF_DIR=~/tripodrt-spark/conf/
export SPARK_CONF_PROPERTIES=~/tripodrt-spark/conf/spark-overrides-tt.conf
なぜ?ログイン時に.bashrcを実行したいと思います。私はRed Hat Enterprise Linuxを使用しています。
ベストアンサー1
bash
マニュアルから:
ログインシェルではなく対話型シェルを起動したときにファイルが存在する場合は、
bash
コマンドを読み込んで実行します。~/.bashrc
したがって、シェルがログインシェルの場合は~/.bashrc
読み取れません。
PATH
代わりに何かを追加したり、そこからインポートしたりすることも~/.bash_profile
できます。~/.bashrc
一部のシェルは、2 つまたは 3 種類のシェル初期化ファイルを区別します。
- ㅏ輪郭ログインシェルから読み取ったファイルです。
- 対話型シェルから読み取ったファイルです。
- 非対話型シェル(スクリプトなど)から読み取ったファイルです。
のためbash
:
~/.bash_profile
~/.bashrc
$BASH_ENV
ファイルが何を指しているかは関係ありません。
分離点輪郭対話型シェルから読み取ったスクリプトの起動スクリプトを使用すると、将来のすべてのシェルセッションに対して(潜在的に重い)操作を一度に設定できます。これには通常、エクスポートされた他のPATH
変数(環境変数など)も一緒に設定することが含まれます。
インタラクティブシェル初期化スクリプト(~/.bashrc
場合bash
)は、インタラクティブシェルで特に必要な操作を実行するだけです。これには、エクスポートしないシェル変数の設定PS1
、エイリアス、関数定義などが含まれます。また、このセッションとこのセッションで実行されるプロセスに設定する必要がある環境変数を設定する必要があります(たとえば、GPG_TTY
GnuPGGPG_TTY="$(tty)"
を使用している場合など)。
source $HOME/.bashrc
私は希望の方法で設定を~/.bash_profile
設定して調整し、履歴ファイル変数、プロンプト、エイリアス、機能などを設定する傾向があります。 (これは半分嘘です。PATH
umask
~/.bashrc
PS1
PAGER
EDITOR
実際に exec
自分のプロフィールでシェルが見つかったら、続行しksh93
ますbash
。私もレニス私のシェルは対話型シェル初期化ファイル(renice -n 4 $$
)にあります。私は私よりも多くのCPUを必要とする多くの人と共有コンピュータで頻繁に作業するからです(しかしそれは私です)。
シェルksh93
の使用
~/.profile
~.kshrc
(または$ENV
それを指すものは何でも)
ksh93
bash
インタラクティブなログインシェルのようなものがあることを知っているよりも少し健全に$ENV
説明します~/.profile
。
シェルはpdksh
また、~/.kshrc
私を迷惑にする非対話型シェルも読みます(そして私が使用しているいくつかの重要なスクリプトを破ります)。
case $- in
*i*) ;;
*) return ;;
esac
私のファイルの上に~/.kshrc
。