bashrc na pasta personalizada [duplicada]

6

Eu quero limpar minha pasta pessoal e consegui mover a maioria dos arquivos de configuração para a pasta .config. Mas, um arquivo que não consigo descobrir é o arquivo .bashrc . Como posso especificar o bash para carregar o .bashrc de um local personalizado?

    
por Hashken 29.08.2014 / 09:14

3 respostas

6

O comando bash aceita uma opção --rcfile filename isso vai:

Execute commands from filename (instead of ~/.bashrc) in an interactive shell.

Portanto, se você executar bash --rcfile ~/.config/bashrc , você carregará esse arquivo.

Existe não uma maneira de configurá-lo para carregar a partir daí por padrão (onde você o configuraria?), além de recompilá-lo com modificações (altere a definição de bashrc_file in shell.c - não é uma opção de configuração). Você pode criar um wrapper que execute bash com a opção --rcfile e passe todos os outros argumentos inalterados - você teria que adicioná-lo a /etc/shells para poder definir esse wrapper como seu shell, e você tem que ter cuidado ao fazer isso. Qualquer uma dessas opções é viável, mas não trivial para acertar.

Se você estiver em um sistema de usuário único, outra opção é colocar toda a sua configuração nos arquivos de todo o sistema em /etc , mas isso não está realmente resolvendo o problema. Você também pode fazer com que o arquivo de todo o sistema detecte como foi executado e reexecute bash com a opção --rcfile automaticamente, mas isso parece ainda mais complicado do que as outras abordagens.

Minha recomendação seria acostumar-se a ter um dotfile extra em seu diretório pessoal, mas as abordagens acima são factíveis se você realmente não puder.

    
por 29.08.2014 / 09:25
4

Com um shell de login, normalmente, seu ~/.bash_profile contém a linha:

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

Assim, você pode definir sua própria pasta de configuração aqui:

BASHRC_CONFIG_DIR=~/config/bash

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

Para o shell de não-login, você pode configurá-lo em /etc/bash.bashrc .

    
por 29.08.2014 / 09:40
3

Inspirado pela resposta do Gnouc, percebi que o bash lê /etc/bash.bashrc e ~/.bashrc nos mesmos casos. Assim, você pode colocar na parte inferior de /etc/bash.bashrc :

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

e, em seguida, mova ~/.bashrc para $XDG_CONFIG_HOME/bash/bashrc

O Bash ainda tentará carregar o ~/.bashrc , o que não é um problema, pois ele não existe mais. E /etc/bash.bashrc garantirá que o arquivo seja carregado a partir de sua nova localização.

    
por 29.08.2014 / 10:29