etc./StackOverFlow

로그아웃했다가 다시 로그인하지 않고 .bashrc 설정을 다시 로드하는 방법은 무엇입니까?

청렴결백한 만능 재주꾼 2021. 12. 21. 22:07
반응형

질문자 :Jed Daniels


.bashrc 를 변경하면 로그아웃했다가 다시 로그인하지 않고 어떻게 다시 로드합니까?



긴 형식 명령을 입력할 수 있습니다.

 source ~/.bashrc

또는 더 짧은 버전의 명령을 사용할 수 있습니다.

 . ~/.bashrc

George Hawkins

또는 다음을 사용할 수 있습니다.

 exec bash

이것은 동일한 작업을 수행하며 기억하기 쉽습니다(적어도 저에게는).

exec 명령은 지정된 명령줄을 실행하여 셸 프로세스를 완전히 대체합니다. 이 예에서는 현재 쉘이 무엇이든 새로운 bash 인스턴스(업데이트된 구성 파일 포함)로 대체합니다.


WhoSayIn

가장 인기 있는 두 가지 답변을 보완하고 대조 . ~/.bashrcexec bash :

두 솔루션 모두 ~/.bashrc 효과적으로 다시 로드하지만 차이점이 있습니다.

  • . ~/.bashrc 또는 source ~/.bashrc현재 쉘 세션을 보존 합니다.

    • ~/.bashrc 를 현재 셸로 다시 로드하는 수정 사항 ( sourcing )을 제외 하고 현재 셸 프로세스와 상태유지 되며 여기에는 환경 변수, 셸 변수, 셸 옵션, 셸 기능 및 명령 기록이 포함됩니다.
  • exec bash 또는 더 강력하게 exec "$BASH" [1]현재 쉘 을 새 인스턴스로 대체 하므로 현재 쉘의 환경 변수 (임시, 세션 내에서 정의한 환경 변수 포함)만 보존합니다. .

    • 즉, 쉘 변수, 쉘 기능, 쉘 옵션, 명령 기록과 관련하여 현재 쉘에 대한 모든 임시 변경 사항이 손실됩니다.

필요에 따라 하나 또는 다른 접근 방식이 선호될 수 있습니다.


[1] exec bash 는 이론적으로 현재 셸을 시작한 것과 다른 bash $PATH 앞부분에 나열된 디렉토리에 존재한다면. 특수 변수 $BASH 항상 현재 쉘을 시작한 실행 파일의 전체 경로를 포함하므로 exec "$BASH" 는 동일한 실행 파일을 사용하도록 보장됩니다.
$BASH 주위에 "..." 참고 사항이 있습니다. 큰따옴표는 Bash에서 해석하지 않고 변수 값을 있는 그대로 사용하도록 합니다. 값에 포함된 공백이나 다른 쉘 메타 문자(이 경우에는 가능성이 없음)가 없으면 큰따옴표가 꼭 필요하지는 않지만 큰따옴표를 사용하는 것이 좋은 습관입니다.


mklement0

누군가 잘못된 영어를 추가하기 위해 내 답변을 편집했지만 여기에 허용된 답변보다 열등한 원본이 있습니다.

 . .bashrc

Randy Proctor

이렇게 하면 "source ~/.bashrc"를 입력 할 필요도 없습니다.

bashrc 파일을 포함하십시오:

 alias rc="vim ~/.bashrc && source ~/.bashrc"

bashrc를 편집할 때마다 별칭 " rc "를 실행하십시오.


Roy Lin

환경에 따라 입력만 하면 됩니다.

 bash

작동할 수도 있습니다.


James

. ~/.bashrc

. POSIX 필수 내장 함수입니다.


대안

 source ~/.bashrc

source 는 점/마침표의 동의어입니다 . bash에서는 있지만 POSIX sh에서는 그렇지 않으므로 최대 호환성을 위해 마침표를 사용합니다.

 exec bash
  • exec 명령 은 쉘 을 주어진 프로그램으로 대체합니다... – WhoSayIn

Geoffrey Hale

exec bash는 현재 셸을 다시 실행하고 새 셸을 시작하는 좋은 방법입니다. 답변에 추가하기 위해 $SHELL은 bash인 현재 셸을 반환합니다. 다음을 사용하면 bash뿐만 아니라 현재 셸을 다시 로드합니다.

exec $SHELL -l;


Jimmy MG Lim

환경에 따라 SSH 세션을 열 때 .bashrc가 자동으로 로드되도록 스크립팅을 추가할 수 있습니다. 최근에 Ubuntu를 실행하는 서버로 마이그레이션했는데 기본적으로 .bashrc 또는 .bash_profile이 아닌 .profile이 로드됩니다. .bashrc에서 스크립트를 실행하려면 source ~/.bashrc 를 실행해야 했습니다. 이는 원격 배포를 실행할 때 도움이 되지 않습니다.

세션을 열 때 .bashrc가 자동으로 로드되도록 하려면 다음을 .profile에 추가해 보세요.

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

세션을 다시 열면 .bashrc에 있는 모든 경로/스크립트가 로드됩니다.


karolus

유형:

source ~/.bashrc

또는 더 짧은 형식으로:

. ~/.bashrc


jwismar

나를 위해 PATH를 변경할 때 작동하는 것은 다음과 같습니다. exec "$BASH" --login


Cecília Assis

나는 easyengine을 사용하여 vultr 클라우드 기반 서버를 설정했습니다.
/etc/bash.bashrc 에서 bash 파일을 /etc/bash.bashrc .

그래서 source /etc/bash.bashrc 가 나를 위해 트릭을 했습니다!

업데이트

베어 서버(ubuntu 16.04)를 설정할 때 아직 사용자 이름을 설정하지 않고 루트를 통해 로그인할 때 위의 정보를 사용할 수 있습니다.

sudo 권한으로 사용자를 생성하고 대신 이 사용자 이름으로 로그인하는 것이 가장 좋습니다.
이렇게 하면 .profile 및 .bashrc 파일을 포함하여 설정을 위한 디렉토리가 생성됩니다.
https://linuxize.com/post/how-to-create-a-sudo-user-on-ubuntu/

~/.bashrc 파일을 편집하고 "소스"합니다.

내 서버에서 이것은 /home/your_username/.bashrc
(여기서 your_username 은 실제로 위에서 생성한 새 사용자 이름이며 이제 로그인합니다)


SherylHohman

msysgit에서 다음 명령을 사용합니다.

 . ~/.bashrc

더 짧은 버전

 source ~/.bashrc

Sojan Jose

대화형 셸을 가정하고 현재 명령 기록을 유지하고 /etc/profile(/etc/bashrc를 포함한 환경 데이터를 로드하고 Mac OS X에서는 /etc/paths.d/에 정의된 경로를 로드합니다. path_helper), 명령 기록을 추가하고 로그인('-l') 옵션을 사용하여 bash 실행을 수행합니다.

 history -a && exec bash -l

beattidp

이것도 효과가 있겠지..

 cd ~ source .bashrc

kirti

exec bash 명령이 환경 변수를 보존한다는 것을 알았으므로 빈 환경에서 exec -c bash

예를 들어, bash에 로그인하고 bash를 exec bash 하면 A == 1 export A=1 .

exec -cl bash 하면 A 는 비어 있습니다.

나는 이것이 당신의 일을 하는 가장 좋은 방법이라고 생각합니다.


CatDog

출처 : http:www.stackoverflow.com/questions/2518127/how-to-reload-bashrc-settings-without-logging-out-and-back-in-again

반응형