회사 클러스터에 로그인할 때마다 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
일부 쉘은 두 가지 또는 세 가지 유형의 쉘 초기화 파일을 구별합니다.
- ㅏ윤곽로그인 쉘에서 읽은 파일입니다.
- 대화형 셸에서 읽은 파일입니다.
- 비대화형 셸(예: 스크립트)에서 읽은 파일일 수 있습니다.
을 위한 bash
:
~/.bash_profile
~/.bashrc
$BASH_ENV
파일이 무엇을 가리키는 지 상관없습니다 .
분리 지점윤곽대화형 셸에서 읽은 스크립트의 시작 스크립트를 사용하면 향후 모든 셸 세션에 대해 (잠재적으로 무거운) 작업을 한 번에 설정할 수 있습니다. 여기에는 일반적으로 PATH
내보낸 다른 변수(예: 환경 변수)도 함께 설정하는 작업이 포함됩니다.
그러면 대화형 셸 초기화 스크립트( ~/.bashrc
의 경우 bash
)는 대화형 셸에서 특별히 요구하는 작업만 수행하면 됩니다. 여기에는 내보내면 안 되는 셸 변수 설정 PS1
, 별칭, 함수 정의 등이 포함됩니다. 또한 이 세션과 이 세션에서 실행되는 프로세스에 대해 설정해야 하는 환경 변수를 설정해야 합니다(예: GPG_TTY
GnuPG GPG_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
.