Onde o arquivo .bashrc é encontrado no Linux?

13

Não estou encontrando meu .bash_login e .bash_profile

root@linux:~# locate .bash*
/etc/bash.bashrc
/etc/skel/.bashrc
/etc/skel/.bashrc.original
/home/noroot/.bashrc
/home/noroot/.bashrc.original
/root/.bash_history
/root/.bashrc
/usr/share/base-files/dot.bashrc
/usr/share/doc/adduser/examples/adduser.local.conf.examples/bash.bashrc
/usr/share/doc/adduser/examples/adduser.local.conf.examples/skel/dot.bashrc
/usr/share/kali-defaults/.bashrc
root@linux:~# 

Sempre existe apenas um arquivo .bashrc e .bash_profile para cada usuário?

E .bashrc e .bash_profile sempre são encontrados no diretório / home / "nome de usuário"?

Jeff Schaller
fonte

Respostas:

14

Os únicos que o bash analisa por padrão estão no diretório inicial do usuário, sim. Normalmente, também há uma fonte única para eles no Linux - / etc / skel. O diretório inicial do usuário não precisa estar em / home.

Vejo que você editou sua pergunta para perguntar onde estão os arquivos .bash_login e .bash_profile. Com base no #prompt, vou assumir que você está executando isso como root. Nesse caso, seus arquivos são

/root/.bash_history
/root/.bashrc

Veja minha resposta original acima sobre o diretório pessoal de um usuário - nem sempre é / home; neste caso, o diretório home do root é /root.

Jeff Schaller
fonte
9

De acordo com man 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.

~/.bash_profile
    The personal initialization file, executed for login shells

~/.bashrc
    The individual per-interactive-shell startup file

Também existe /etc/bashrc( /etc/bash.bashrcno Linux baseado no Debian) que contém System wide functions and aliases. Por padrão, isso é definido, mesmo para shells não interativos e sem logon.

EDITAR:

Os tildecaminhos indicam o home directoryusuário conectado no momento. O Bash só pode usar um dos ~/.bash_profile, ~/.bash_login, or ~/.profile(por usuário atualmente conectado), nessa ordem, para ler e executar comandos. (Os sistemas operacionais baseados no Debian geralmente não ~/.bash_profile or ~/.bash_login. usam o arquivo ~/.profile. Este arquivo explica que ele será lido e usado, a menos que ~/.bash_profile or ~/.bash_loginseja criado.

#~/.profile: executed by the command interpreter for login shells.

#This file is not read by bash(1), if ~/.bash_profile or ~/.bash_login existe.

Timothy Martin
fonte
De que maneira isso responde à minha pergunta?
1
@BROY Responde à pergunta que você deveria estar fazendo e não à que você fez.
Shadur
Eu já vi algumas pessoas colocarem um arquivo .bash_profile nos diretórios do projeto, isso realmente é detectado pelo bash? Eu não acho que isso deveria acontecer por padrão.
Alexander Mills
5

Sua bashrclocalização do arquivo é distro-dependente ... Aqui está uma lista básica para o sistema bashrc:
/etc/bashrc(Redhat, Fedora, etc)
/etc/bash.bashrc(Debian, Ubuntu, Linux Mint, Backtrack, Kali etc)
/etc/bash.bashrc.local(Suse, OpenSuse, etc)
Depois, há o usuário único privado bashrc, que, na maioria das vezes, é armazenado em ~/.bashrcbasicamente todas as distros ... Se você não possui uma das distribuições listadas ou possui um sistema especial, sempre pode procurar a bashrclocalização no google para essa distribuição ou sistema ...
Atenciosamente,
Interessante ...

Interessante...
fonte
1

Como as pessoas já declararam, você pode encontrar um esqueleto do bashrc em /etc/skel/.bashrc. Se usuários diferentes desejam configurações diferentes do bash, você deve colocar um arquivo .bashrc nessa pasta inicial dos usuários.

Quando se trata de .bash_profile e .bash_login, o usuário precisa criá-los manualmente e vinculá-los via bashrc. O bash_profile e o bash_login existem para criar uma sensação mais organizada para as diferentes configurações que você carrega. Pessoalmente, mantenho todos os meus pseudônimos em bash_profile para não precisar resolver uma bagunça no bashrc para fazer uma edição rápida.

Aqui está um exemplo do que você teria no seu arquivo .bashrc:

if [ -f ~/.bash_profile ]; then
        . ~/.bash_profile
fi
Peschke
fonte