Onde está .bash_profile?

39

Eu quero colocar novos aliases no meu arquivo .bash_profile , mas não consigo encontrar este arquivo.
Onde é suposto ser?

    
por Shira 06.03.2011 / 12:40

5 respostas

36

É um arquivo oculto, localizado na sua pasta pessoal:

~/.bash_profile

(o ~ expande para o seu diretório inicial. Se o seu nome de usuário for user , o resultado será: /home/user/.bash_profile ).

Como é um arquivo oculto, você deve torná-lo visível. Para fazê-lo no Nautilus, vá ao menu "View" e marque "Show hidden files" (ou pressione o atalho Ctrl + H ).

Se você estiver usando o Kubuntu com o Dolphin, terá que pressionar Ctrl + . para alternar a visibilidade dos arquivos.

    
por Lekensteyn 06.03.2011 / 12:45
10

~/.bash_profile não é o lugar certo para colocar aliases e funções. Eles devem ir em ~/.bashrc . Veja link para uma explicação.

    
por geirha 06.03.2011 / 19:39
6

É útil colocar todo o seu alias em ~/.bash_aliases no diretório inicial do usuário. Isso é o que é sugerido no arquivo ~/.bashrc nos comentários.

    
por guest boeroe 29.12.2013 / 01:57
1

Você não costuma ter .bash_profile no Ubuntu, nem deveria geralmente criar esse arquivo. Como jpezz diz , ele estaria no seu diretório home no seu sistema Ubuntu, que é o que ~ significa para, e você pode criá-lo lá. Mas se você fizer isso, você deve ter cuidado, porque ele irá evitar bash de executar automaticamente os comandos em .profile - o que você quase certamente faz tem.

Quando bash é executado como um shell de login , em WSL ou de outra forma 1 , ele executa o primeiro de .bash_profile , .bash_login ou .profile que existe em seu diretório pessoal. Se você tiver os comandos bash -specific que deseja executar ao efetuar login, mas somente quando bash for o seu shell, você poderá colocá-los em .bash_profile . Mas a mera existência de .bash_profile impediria que .profile fosse usado.

Então, você gostaria de source .profile de .bash_profile , supondo você queria que esses comandos fossem executados também, o que você quase sempre faria. Você poderia fazer isso colocando este comando em .bash_profile :

. ~/.profile

(Alguns leitores podem estar acostumados a ver isso escrito como . "$HOME/.profile" quando ele aparece em um script de inicialização. Isso é sempre bom - e você pode preferir usar isso para comandos que precisam trabalhar em shells diferentes de bash também, se você precisar acomodar shells extremamente antigas que não suportam os recursos padrão , qual - bem, você não precisa disso. Em qualquer caso, bash sempre suporta expansão do til e o ponto de .bash_profile é que somente bash executa comandos a partir dele, então . ~/.profile está bem.)

O . embutido origina um arquivo, o que significa que ele executa todos os comandos do arquivo no shell atual. Abra um bash shell interativo e execute help . para obter mais informações.

O motivo pelo qual você normalmente não tem .bash_profile no Ubuntu, mesmo se você tiver bash -específicos que você quer executar no login é que, por padrão, os usuários ' .profile arquivos contêm código que verifica se o shell atual é bash , então faz com que tais comandos sejam executados.

Há outra resposta para a pergunta de onde arquivos como .profile ou .bash_profile são. As versões padrão desses arquivos existem no diretório /etc/skel . Os arquivos desse diretório são copiados para os diretórios iniciais do Ubuntu quando as contas de usuários são criadas em um sistema Ubuntu - incluindo a conta de usuário que você cria como parte da instalação do Ubuntu. Se você olhar nesse diretório, notará que existe um arquivo chamado .profile - bem como alguns outros arquivos como .bashrc - mas não há um arquivo chamado .bash_profile . É por isso que - ou, realmente, como - não existe .bash_profile em seu diretório pessoal do Ubuntu, a menos que você mesmo tenha criado.

Finalmente, você deve não colocar aliases em .profile , nem .bash_profile é um bom lugar para eles, como geirha diz com razão . Isso porque você desejará que seus aliases funcionem em shells interativos, independentemente de serem ou não shells de login. Em vez disso, defina seus alias em .bashrc ou, melhor, .bash_aliases (como guest boeroe aponta ), que o padrão .bashrc sources. Veja Como faço para criar um alias de Bash permanente?

O arquivo .profile padrão verificará se você está executando um .bash shell e a origem .bashrc se você estiver:

# if running bash
if [ -n "$BASH_VERSION" ]; then
    # include .bashrc if it exists
    if [ -f "$HOME/.bashrc" ]; then
    . "$HOME/.bashrc"
    fi
fi

Enquanto isso, o padrão .bashrc será encerrado no topo sem fazer nada se for executado em um shell não interativo, portanto, os comandos nele não serão executados se forem obtidos por .profile em um non -interactive shell de login e em outros cenários mais obscuros 2 :

# If not running interactively, don't do anything
case $- in
    *i*) ;;
      *) return;;
esac

Portanto, se você colocar aliases em .bashrc ou em .bash_aliases , você os obterá para shells de login interativos (onde .profile é usado), além de shells interativos que não são de login (onde .bashrc é usado). Isso é o que você quer. Apenas não coloque nada acima da verificação de interatividade, a menos que você realmente, realmente saiba o que está fazendo.

1 Esta resposta foi originalmente escrita para uma questão relacionada à WSL , mas essa questão foi encerrada como uma duplicata e esta resposta se aplica totalmente aqui também, então eu expandi um pouco e a publiquei aqui em vez disso.

2 Quando bash detecta que provavelmente está sendo executado como o shell inicial de um login remoto que não é um shell de login -como quando você usa ssh para executar um único comando em um máquina remota - executa comandos de .bashrc . (Veja 6.2 Arquivos de Inicialização Baseada no Manual do GNU Bash .)

    
por Eliah Kagan 27.10.2017 / 17:16
0

só queria entrar em sintonia - que até os arquivos estão escondidos no visualizador, você ainda pode abrir todos eles se você digitar o nome do arquivo. Por exemplo, se você escrever na barra de endereços do dolphin /home/<user>/.bashrc, ele abrirá o arquivo com o editor padrão, sem alternar / ocultar alguns arquivos.

Outra forma é simplesmente abrir o seu editor favorito e digitar o nome do arquivo.

Eu vejo que a maneira mais preferida de lidar com arquivos ocultos é mostrar não mostrar apenas adicionar ao ruído que pode ser evitado.

E aliases devem entrar em .bashrc como geirha escreveu.

    
por Osis 08.03.2011 / 11:24

Tags