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


22

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성공하지.

어떤 아이디어?

답변:


19

왜 그것을 소싱합니까? 당신은 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.


고맙습니다. 나는 /bin/sh지적한 이후로 중요하지 않다고 가정했다 /bin/bash. 이 문제는 /bin/bash처음에 사용자 계정을 만들 때 셸을 명시 적으로 할당하지 않았기 때문이라고 생각 합니다.
haste

또한, 데비안 / 우분투로 전환 dash을위한 /bin/sh시작 시간을 줄이기위한 노력의 일환으로. 사용자가 쉘이 다르게 작동하는 이유를 묻기 시작했을 때 이것은 재미있었습니다.
kurtm

18

.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

1
@terdon 당신의 대답은 맞습니다. 내 대답은 그가 달리는 경우에만 유효합니다 bash. 좋은 캐치, 나는 그것을 놓쳤다.
Jeight

기본적으로 사용 되는 bash것과 같은 다른 쉘과 함께 실행하면 두통이 발생할 수 있습니다 . ksh93.profile
Kusalananda

~ / .bash_profile이 없으면 만들 수 있습니다.
Pratik Singhal

Debain 기반 OS의 .bashrc, CentOS / Fedora / Mac OS의 .bash_profile
Mitoxys
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.