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을 사용하고 있으며 dwmst. 나는 사용해 보았지만 .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기본 쉘에 대한 심볼릭 링크입니다. 예를 들어 내 Debian에서는 다음과 같습니다.

$ 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지지 않습니다. 를 사용하여 기본 쉘을 bash로 설정하십시오 chsh -s /bin/bash.

관련 정보