Como criar ~ / .bash_profile e ~ / .profile

25

Portanto, não tenho .bash_profilenenhum .profilena minha pasta pessoal. Como eu os crio? Depois disso, o que devo fazer toda vez que abrir o terminal, esses arquivos serão lidos?

Thi G.
fonte

Respostas:

28

Você pode usar o touchcomando

Por exemplo,

cd ~

para ir para o diretório inicial.

Agora vamos criar um arquivo chamado .bash_profile(o ponto significa que ele estará oculto).

Em seguida, use nanoou vino terminal. A menos que você saiba o que vié, basta usar nano. Para abrir esses arquivos, você usaria:

sudo nano .bash_profile

sudogarante que você poderá salvar esses arquivos. Aqui, você pode adicionar aliases. nanoou vicriará automaticamente um novo arquivo se ele não existir no seu diretório atual no Terminal.

Depois de terminar, pressione Ctrl+ O, Entere Ctrl+ Xpara salvar e sair. Finalmente, use

source ~/.bash_profile

para recarregar o Terminal e ele lerá o que você coloca nesses arquivos.

Claro, você também pode usar o alias se quiser. :)

Para responder à sua pergunta final, esses arquivos serão lidos automaticamente toda vez que você abrir o Terminal. No entanto, se houver um erro (por exemplo, não coloque espaços entre aliases), ele informará.

Mais Informações

Como George apontou, .bash_profileserá executado apenas nos shells de login. Para shells sem login, você precisaria criar um .bashrcarquivo com:

    sudo nano .bashrc

Ligações

.bash_profile vs .bashrc

Importância de .bashrc

sameetandpotatoes
fonte
5
Por que você está usando touchpara criar arquivos vazios primeiro? nanofaz isso automaticamente de qualquer maneira.
nohillside
5
Além disso, você provavelmente não quer o ~ / .profile e o ~ / .bash_profile - se o bash vir .bash_profile, não se incomodará com o .profile. Por fim, ele só será executado para shells de "login"; shells sem logon executam ~ / .bashrc. Veja as perguntas anteriores do SO aqui e aqui .
Gordon Davisson
@GordonDavisson é bom ter ~/.profilecomo cópia ~/.bash_profile? E se você tem os dois, o que você tem por dentro ~/.profileque não pode ser feito ~/.bash_profile?
Thi G.
2
@ThiG: Eu não gostaria que um fosse uma cópia do outro; é provável que você adicione algo a um, esqueça de adicioná-lo ao outro e fique confuso. Veja minhas recomendações sobre esta questão de SO para o que eu consideraria a melhor prática.
Gordon Davisson
sudogarante que você estrague os direitos do usuário. Não faça isso.
Max Ried
2

Você pode copiar esses arquivos de / etc / skel / que são arquivos de esqueleto para novos usuários criados por comando como useradd em distros baseadas no Debian:

cp -nr /etc/skel/. ~/

Esses arquivos serão carregados automaticamente pelo shell sempre que você efetuar login. A maneira de carregar esses arquivos de perfil é descrita na página de manual do shell. Caso você use o bash shell de maneira especial (por exemplo, via ssh, ansible, etc ...), use o comando 'bash -ilc "que deseja executar no ENV preparado por esses arquivos de perfil"'. -i significa shell interativo que geralmente é exigido pelo .bashrc -l shell de logon que faz com que o .profile seja carregado (ou o .bash_profile existe - consulte a página de manual do bash) que carrega o .bashrc

Juraj Michalak
fonte
0

Eu prefiro usar editores de texto da GUI, como BBEdit ou TextWrangler. Esses editores de texto podem lidar com arquivos invisíveis, como .profile e .bash_profile, e têm a vantagem de ter uma interface GUI, ao contrário do nano, que é uma interface do console.

TextWrangler

BBEdit

Kaydell
fonte
0

Você também pode usar um editor de texto da GUI como o TextEdit:

touch ~/.bash_profile
open -e ~/.bash_profile

open -eé um atalho para open -a TextEdit.

Você não precisa necessariamente criar .profile ou .bashrc. O Terminal e o iTerm 2 abrem novos shells como shells de login, para que o bash não leia .bashrc. Se existirem .bash_profile e .profile, o bash lê apenas .bash_profile quando é chamado como um shell de logon interativo. .profile é lido pelo ksh quando é chamado como um shell de login interativo e pelo bash quando é chamado como sh como um shell de login interativo.

Na verdade, eu disse ao iTerm 2 para abrir novos shells como shells sem login, e meu .bash_profile contém apenas uma linha como . ~/.bashrc. O tmux e o modo shell no emacs abrem novos shells como shells sem login por padrão. .bash_profile ainda é lido quando ssh no meu computador.

Lri
fonte
Deixe-me ver se entendi ... Você tem os dois ~/.bash_profilee ~/.profile? E você também tem ~/.bashrc?
Thi G.
Não tenho um .profile e meu .bash_profile apenas contém . ~/.bashrc.
Lri