Bash는 수동으로 시작하지 않으면 .bashrc를 읽지 않습니다. echo $TERM st-256color $ echo

bash.bashrc터미널 bash에서 수동으로 실행하지 않으면 대화 형 터미널에서 소스 를 얻지 못합니다 .

$ bash

또는 수동으로 소스 :

$ source ./.bashrc

또는 달리기 :

$ st -e bash

다음은 유용한 결과입니다.

$ echo $TERM
st-256color

$ echo $SHELL
/bin/sh

$ readlink /bin/sh
bash

$ shopt login_shell
login_shell     off

CRUX Linux 3.0을 사용 dwm하고 있으며를 사용 st합니다. 내가 사용 해봤 .bash_profile.profile성공하지.

어떤 아이디어?



답변

왜 그것을 소싱합니까? 당신은 true를 실행하지 않습니다 bash:

$ echo $SHELL
/bin/sh

대부분의 현대 시스템 sh에서 기본 쉘에 대한 심볼릭 링크입니다. 예를 들어 데비안에서 :

$ ls -l /bin/sh
lrwxrwxrwx 1 root root 4 Aug  1  2012 /bin/sh -> dash

귀하의 경우에 sh대한 링크 bash는 다음과 man bash같습니다.

bash가 sh라는 이름으로 호출되면 POSIX 표준도 준수하면서 sh의 히스토리 버전 시작 동작을 최대한 가깝게 모방하려고합니다. […] 이름이 sh 인 대화식 쉘로 호출되면, bash는 변수 ENV를 찾고 정의 된 경우 해당 값을 확장 한 다음 확장 된 값을 읽고 실행할 파일 이름으로 사용합니다. 이후 쉬로 호출 쉘 다른 시작 파일에서 명령을 읽기 및 실행하려고 시도하지 않습니다 는 –rcfile 옵션이 적용되지 않습니다.

–norc
쉘이 대화식 인 경우 시스템 전체 초기화 파일 /etc/bash.bashrc 및 개인 초기화 파일 ~ / .bashrc를 읽고 실행하지 마십시오. 쉘이 sh로 호출되면이 옵션이 기본적으로 사용됩니다.

따라서 기본 쉘은 sh이므로 .bashrc읽지 않습니다. 를 사용하여 기본 쉘을 bash로 설정하십시오 chsh -s /bin/bash.


답변

.bash_profile에 다음이 있는지 확인하십시오.

# .bash_profile

# If .bash_profile exists, bash doesn't read .profile
if [[ -f ~/.profile ]]; then
  . ~/.profile
fi

# If the shell is interactive and .bashrc exists, get the aliases and functions
if [[ $- == *i* && -f ~/.bashrc ]]; then
    . ~/.bashrc
fi