.bashrc는 경로를 내보내지 않습니까?

.bashrc는 경로를 내보내지 않습니까?

회사 클러스터에 로그인할 때마다 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

일부 쉘은 두 가지 또는 세 가지 유형의 쉘 초기화 파일을 구별합니다.

  1. 윤곽로그인 쉘에서 읽은 파일입니다.
  2. 대화형 셸에서 읽은 파일입니다.
  3. 비대화형 셸(예: 스크립트)에서 읽은 파일일 수 있습니다.

을 위한 bash:

  1. ~/.bash_profile
  2. ~/.bashrc
  3. $BASH_ENV파일이 무엇을 가리키는 지 상관없습니다 .

분리 지점윤곽대화형 셸에서 읽은 스크립트의 시작 스크립트를 사용하면 향후 모든 셸 세션에 대해 (잠재적으로 무거운) 작업을 한 번에 설정할 수 있습니다. 여기에는 일반적으로 PATH내보낸 다른 변수(예: 환경 변수)도 함께 설정하는 작업이 포함됩니다.

그러면 대화형 셸 초기화 스크립트( ~/.bashrc의 경우 bash)는 대화형 셸에서 특별히 요구하는 작업만 수행하면 됩니다. 여기에는 내보내면 안 되는 셸 변수 설정 PS1, 별칭, 함수 정의 등이 포함됩니다. 또한 이 세션과 이 세션에서 실행되는 프로세스에 대해 설정해야 하는 환경 변수를 설정해야 합니다(예: GPG_TTYGnuPG GPG_TTY="$(tty)"를 사용하는 경우).

source $HOME/.bashrc나는 원하는 방식으로 설정을 ~/.bash_profile설정 하고 조정한 다음 기록 파일 변수, 프롬프트, 별칭, 기능 등을 설정하는 경향이 있습니다 . (이건 반쯤 거짓말이에요.PATHumask~/.bashrcPS1PAGEREDITOR실제로 exec내 프로필에서 쉘을 찾을 수 있으면 ksh93계속 진행하겠습니다 bash. 나도레니스내 쉘은 대화형 쉘 초기화 파일( renice -n 4 $$)에 있습니다. 왜냐하면 저는 나보다 CPU가 더 필요한 많은 사람들과 공유 컴퓨터에서 자주 작업하기 때문입니다(그러나 그것은 바로 나입니다).

ksh93사용

  1. ~/.profile
  2. ~.kshrc(또는 $ENV그것을 가리키는 무엇이든)

ksh93bash대화형 로그인 셸 같은 것이 있다는 것을 알고 있는 것 보다 조금 더 건전하게 $ENV설명하겠습니다 ~/.profile.

쉘은 pdksh또한 ~/.kshrc나를 짜증나게 하는 비대화형 쉘을 읽습니다(그리고 내가 사용하는 일부 중요한 스크립트를 깨뜨립니다).

case $- in
    *i*)    ;;
    *)      return      ;;
esac

내 파일 상단에 ~/.kshrc.

관련 정보