홈 폴더를 정리하고 싶었고 대부분의 구성 파일을 .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
.