Bash는 수동으로 시작하지 않는 한 .bashrc를 읽지 않습니다.

Bash는 수동으로 시작하지 않는 한 .bashrc를 읽지 않습니다.

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

어떤 아이디어가 있나요?

답변1

.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

답변2

왜 발생합니까? 기본 쉘은 bash가 아니지만 다음과 같습니다 sh.

$ echo $SHELL
/bin/sh

대부분의 최신 시스템에서 sh이는 기본 쉘에 대한 기호 링크입니다. 내 데비안을 예로 들어 보겠습니다.

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

귀하의 경우 아래 설명된 대로 BUT sh에 대한 링크입니다 .bashman bash

bash가 sh 이름으로 호출되면 POSIX 표준을 준수하면서 sh의 이전 버전의 시작 동작을 최대한 가깝게 모방하려고 시도합니다. [...] sh라는 대화형 셸로 호출되면 bash는 변수 ENV를 찾고 해당 값이 정의된 경우 확장한 다음 확장된 값을 읽고 실행할 파일 이름으로 사용합니다. ~부터sh로 호출된 쉘은 다른 시작 파일에서 명령을 읽고 실행하려고 시도하지 않습니다., --rcfile 옵션이 유효하지 않습니다.

그리고

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

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

관련 정보