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