Qual é a diferença entre /etc/bash.bashrc e ~ / .bashrc? Qual devo usar?

20

Quando devo usar cada um dos dois arquivos .bashrc para definir meus aliases, prompt, etc?

cfischer
fonte

Respostas:

34

/etc/bash.bashrc aplica-se a todos os usuários

~/.bashrc aplica-se apenas ao usuário em que pasta inicial está.

Loïc Wolff
fonte
3
E a resposta implícita da dex é ... Use seu ~ / .bashrc local em todos os casos, exceto onde você deseja impor sua vontade a todos que usam essa máquina.
Dacracot
Estritamente falando, você não está aplicando nada em /etc/bash.bashrc porque os usuários podem sempre mudá-lo em seu próprio ~ / .bashrc
Kim
... exceto quando alguém decide fazer todas as variáveis readonlyem /etc/bash.bashrc: \
grawity
1
No Ubuntu, esse arquivo, como comentado no início, deve ser "originário" do arquivo / etc / profile. Adicionei um comando de alias no final do /etc/bash.bashrc e anexei o comando "source /etc/bash.bashrc" no final do arquivo / etc / profile. Funciona como um encanto.
Jfmessier
2

De acordo com a documentação do GNU Bash :

Quando o Bash é chamado como um shell de login interativo ou como um shell não interativo com a opção --login, ele primeiro lê e executa comandos do arquivo / etc / profile , se esse arquivo existir. Depois de ler esse arquivo, ele procura ~ / .bash_profile , ~ / .bash_login e ~ / .profile, nessa ordem, e lê e executa comandos do primeiro que existe e é legível. A opção --noprofile pode ser usada quando o shell é iniciado para inibir esse comportamento.

Chamado como um shell interativo de não logon Quando um shell interativo que não é um shell de logon é iniciado, o Bash lê e executa comandos de ~ / .bashrc , se esse arquivo existir. Isso pode ser inibido usando a opção --norc. A opção --rcfile file forçará o Bash a ler e executar comandos do arquivo em vez de ~ / .bashrc.

Então, normalmente, seu ~ / .bash_profile contém a linha

if [-f ~ / .bashrc]; então . ~ / .bashrc; fi

depois (ou antes) de qualquer inicialização específica de login.

Felipe Alvarez
fonte
1
Na verdade não. Veja este arquivo git.savannah.gnu.org/cgit/bash.git/tree/shell.c , na função run_startup_files () em que SYS_BASHRC é usado, definido em git.savannah.gnu.org/cgit/bash.git/ tree / config-top.h
mloskot
1

Para suas preferências pessoais e scripts pessoais ou funções bash, você deve usar .bashrc (aliases, Funções adicionadas ao bash ...)

No momento em que você deseja compartilhar algo com todos os usuários (ou com a maioria dos usuários) ou para itens de uso geral (caminho para executáveis ​​compartilhados, caminho para documentação ...), coloque-o em /etc/bash.bashrc

Eu disse a maioria dos usuários porque até digamos que você especifique um script greetings.sh que imprime "Hello world!"para todos os usuários, mas o usuário Pepe deseja usar o script greetings.sh que imprime "Hola el mundo!". Ele pode modificar seu caminho em seu .bashrc para apontar para o script dele em vez do seu. Em outras palavras, o usuário sempre pode personalizar sua sessão no .bashrc para o que ele quiser.

Depurador
fonte