새 터미널을 열 때 .bashrc가 실행되지 않습니다


84

Ubuntu 12.04에서 새 터미널 창을 열면 .bashrc의 코드가 실행되지 않습니다. .bash_aliases 파일을 만들 때 이것이 나타났습니다. 새 터미널을 열었을 때 별칭이 나타나지 않았습니다. 그러나 내가 입력 source .bashrc하면 별칭이 표시되었습니다.

새 터미널 창을 열 때마다 .bashrc를 실행해야합니까?

어떻게하면 되나요?


대신 .profile을 시도하십시오.
— jippie

4
@jippie No .profile는 어딘가에 구성이 잘못되지 않은 한 새 터미널을 열 때가 아니라 로그인시 읽습니다. Selah : 기본 구성에서 아무것도 변경하셨습니까? ps -o command $$ $PPID터미널에서 실행 하고 출력을 복사하여 붙여 넣습니다.
— Gilles

1
긍정적 인 확신을주기 위해 .bashrc홈 폴더에 넣는 것 입니다.
— Jjed

확인하고 싶을 수도 있습니다 echo $SHELL. 이것은 나에게 일어 났고 쉘은 bash 대신 / bin / sh였습니다. / etc / passwd 및 실행중인 .bashrc에서 수정하십시오.
— Joe Flynn

답변:


128

반드시 실행되는 것은 아닙니다. 표준 .bashrc의 맨 위에는 다음과 같은 주석이 있습니다.

# ~/.bashrc: executed by bash(1) for non-login shells.
# see /usr/share/doc/bash/examples/startup-files (in the package bash-doc)
# for examples

bash 터미널을 로그인 쉘로 실행하는 옵션이 있는지 여부가 있습니다. 우분투에서 gnome-terminal은 일반적으로 로그인 쉘로 실행되지 않으므로 .bashrc를 직접 실행해야합니다.

로그인 쉘 (가상 터미널과 같은)의 경우 일반적으로 ~/.profile또는가 ~/.bash_profile없거나 ~/.bash_login기본적으로없는 경우 파일 이 실행 됩니다. 기본적으로 Ubuntu는 .profile 만 사용합니다.

표준 ~/.profile에는 다음이 포함됩니다.

if [ -n "$BASH_VERSION" ]; then
    # include .bashrc if it exists
    if [ -f "$HOME/.bashrc" ]; then
        . "$HOME/.bashrc"
    fi
fi

환경에 $ BASH_VERSION이 있다고 가정하면 사용 가능한 경우 .bashrc가 실행됩니다. 명령을 입력하여이를 확인할 수 있으며 echo $BASH_VERSION버전 번호에 대한 일부 정보를 표시해야합니다. 비어 있지 않아야합니다.


4
이 지침을 이해 한 후 터미널 응용 프로그램에서 편집-> 프로필 환경 설정-> 제목 및 명령-> 명령을 로그인 쉘로 실행했습니다. 나는 이것을 체크하지 않았다. 도와 주셔서 감사합니다.
— Selah

.profile (따라서 .bashrc)을로드 / 읽는 시점을 알 수 있습니까? 이것은 사용자가 데스크톱 세션에 로그인 할 때 수행되는 것으로 보입니다. 답은 새로운 터미널 / 쉘 세션을 시작할 때 "가상 터미널과 같은 로그인 쉘의 경우 일반적으로 ~ / .profile 파일이 실행됩니다 ..."
— hedgehog

4
그것은되어 일반적으로 새 로그인 쉘 시작할 때 (정말 데스크탑하지 세션을 바탕 화면 세션에서 새 로그인 쉘을 실행할 수 있기 때문에) 실행합니다. 내가 말했듯이, 그것은 기본적으로 실행되지만 만든되지 않은 경우 ~/.bash_profile나 ~/.bash_login. 의 확인란을 선택 또는 선택 취소하여 테스트 한 Edit -> Profile Preferences -> Title and Command -> "Run command as a login shell후 종료 한 후 터미널을 다시 실행할 수 있습니다. .profile에서 테스트 할 내용을 에코 할 수 있습니다.
— Marty Fried

@Selah 귀하의 의견은 실제 답변보다 더 많은 도움이되었습니다.) 의견을 보내 주셔서 감사합니다!
— Aleks

따라서 시스템 을 만들 ~/.bash_profile거나 ~/.bash_login시스템에서 유지하고 싶지만 여전히 실행 하고 싶을 ~/.profile경우 ~/.bashrc자체 ~/.bash_profile또는 ~/.bash_login을 포함하는 줄 에서 소스를 얻을 수 있습니다 source "$HOME/.profile". 로그인 쉘에서도 ls의 컬러 출력을 제공합니다!
— tanius

26

내 경우에는 단순히 .bashrc로더 라인이 누락되었습니다..bash_profile

# include .bashrc if it exists
if [ -f "$HOME/.bashrc" ]; then
    . "$HOME/.bashrc"
fi

수동으로 추가했으며 새로운 로그인으로 작동했습니다.


3
.bash_profile? 우분투는 .profile기본적으로 아닌을 사용합니다 .bash_profile.
— muru

우분투 서버는 종종 .bashrc를 선택하지 않습니다 ... 위와 같이 작동합니다 ... cat .bash_profile [[-s "$ HOME / .bashrc"]] && source "$ HOME / .bashrc"# 기본값 불러 오기
— Scott Stensland

이것은 나를 위해 그것을 해결했습니다! 추가 pcre했는데 bash 프로필을 추가하는 대신 덮어 썼습니다.
— shapiro yaacov

7

.bash_profilebash 쉘의 구성을 보유합니다. 터미널을 열면 먼저 터미널에서 명령을 읽고 실행합니다 ~/.bash_profile. 따라서 .bash_profilebashrc에 따라 다음을 추가 하여 쉘을 설정할 수 있습니다 .

. ~/.bashrc

터미널이 로그인 쉘 (우분투 ~/.bash_profile에서는 기본적으로 존재하지 않음)을 실행하지 않으면 읽을 수 없습니다 (우분투에는 기본적으로 존재하지 않음)
— muru

5

설정 $BASH_VERSION되어 있지 않으면 chsh명령을 사용하여 쉘을로 설정하십시오 /bin/bash.

12.04 LTS와 비슷한 문제가 있었고 새 사용자 계정에 기본 셸이으로 설정되어 /bin/sh문제의 원인이되었습니다.


이것이 이유였습니다!
— mulya

1

.profile의 주석으로 인코딩

~ / .profile : 로그인 쉘에 대해 명령 인터프리터에 의해 실행됩니다.

그래서 거기에 가면 ~/.bash_profile또는 ~/.bash_login exists대신에 그것들이 대신 실행됩니다.~/.profile

실행 ~/.bashrc하려면 라인 source ~/.bashrc을 추가하십시오 .bash_profile


1
나는 똑같은 문제를 경험했다. 내이 .bashrc내가 만든까지 공급되고 있던 .bash_profile파일을. 그래서 나는 파일에 source ~/.bashrc 줄을 추가했다 .bash_profile.
— Lashae

0

그 과정을 모두 거치는 대신 Edit -> Profile Preferences -> Title and Command -> "Run a custom command instead of my shell"사용자 지정 명령 상자에 쓰고 bash닫으십시오. 다음에 터미널을 열면 bash가 자동으로 실행됩니다.


어떤 GUI를 언급하고 있습니까? 그놈 또는 화합
— Nic Wanavit
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.