사용자 정의 폴더의 bashrc

사용자 정의 폴더의 bashrc

홈 폴더를 정리하고 싶었고 대부분의 구성 파일을 .config 폴더로 이동했습니다. 그런데 알 수 없는 파일이 바로 이 .bashrc파일입니다. 사용자 정의 위치에서 .bashrc를 로드하도록 bash를 어떻게 지정합니까?

답변1

bash명령--rcfile filename옵션 을 수락이는 다음을 수행합니다.

대화형 셸의 파일 이름(~/.bashrc 아님)에서 명령을 실행합니다.

따라서 실행하면 bash --rcfile ~/.config/bashrc해당 파일이 로드됩니다.

거기아니요bashrc_file수정 사항을 적용하여 다시 컴파일하는 대신(in 정의 변경 shell.c- 구성 옵션이 아님) 기본적으로 해당 위치에서 로드되도록 구성하는 방법입니다(어디에서 구성하시겠습니까?). bash이 옵션으로 실행되는 래퍼를 생성하여 --rcfile다른 모든 인수를 변경하지 않고 전달할 수 있습니다. 이를 추가하여 래퍼를 셸에 설정해야 하며 /etc/shells신중하게 수행해야 합니다. 두 가지 옵션 중 하나가 가능하지만 올바르게 수행하는 것은 쉽지 않습니다.

단일 사용자 시스템을 사용하는 경우 또 다른 옵션은 모든 구성을 시스템 전체 파일에 저장하는 것이지만 /etc실제로 문제가 해결되지는 않습니다. 시스템 전체 파일이 어떻게 실행되었는지 감지하고 bash해당 --rcfile옵션을 사용하여 자동으로 다시 실행하도록 할 수도 있지만 이는 다른 방법보다 더 우려되는 것 같습니다.


내 조언은 홈 디렉토리에 추가 도트 파일을 두는 것에 익숙해지라는 것입니다. 하지만 실제로 그렇게 할 수 없다면 위의 방법이 효과가 있을 것입니다.

답변2

Gnouc의 답변에서 영감을 받아 bash가 같은 상황에서 읽는다는 것을 깨달았습니다 /etc/bash.bashrc. ~/.bashrc따라서 이것을 맨 아래에 넣을 수 있습니다 /etc/bash.bashrc.

 if [ -s "${XDG_CONFIG_HOME:-$HOME/.config}/bash/bashrc" ]; then
    . "${XDG_CONFIG_HOME:-$HOME/.config}/bash/bashrc"
 fi

그런 다음 ~/.bashrc이동$XDG_CONFIG_HOME/bash/bashrc

Bash는 여전히 로드를 시도하지만 ~/.bashrc더 이상 존재하지 않으므로 문제가 되지 않습니다. 그러면 /etc/bash.bashrc새 위치에서 파일을 로드하게 됩니다.

답변3

로그인 셸의 경우 ~/.bash_profile일반적으로 다음 줄이 포함됩니다.

if [ -f ~/.bashrc ]; then
    . ~/.bashrc
fi

따라서 여기에서 고유한 구성 폴더를 설정할 수 있습니다.

BASHRC_CONFIG_DIR=~/config/bash

if [ -f "$BASHRC_CONFIG_DIR/.bashrc" ]; then
    . "$BASHRC_CONFIG_DIR/.bashrc"
fi

비로그인 쉘의 경우 이는 에서 수행할 수 있습니다 /etc/bash.bashrc.

관련 정보