Não consigo encontrar .bash_profile no ubuntu

67

Não consigo encontrar .bash_profileno Ubuntu 14.04 no meu /home/userdiretório. Eu usei o ls -acomando para ver o .bash_profilearquivo, mas não existe esse arquivo.

Roledenez
fonte
11
Você deve usar em seu ~/.profilelugar.
Muru
2
possível duplicata não consigo encontrar Bash_profile
Alaa Ali
11
É bastante comum que algum arquivo de configuração (ou mesmo diretórios) esteja ausente. Nesse caso, o software que deve lê-los usará uma configuração padrão e / ou lerá outras fontes para recuperar a configuração. Se você deseja modificar um arquivo de configuração que não existe, basta criá-lo primeiro.
Bakuriu 13/08/14

Respostas:

84

O Ubuntu usa ~/.profile.

você pode criar o seu .bash_profileno Ubuntu, mas .profilenão será lido.

Se lermos o conteúdo .profile:

cat ~/.profile

resultado

# ~/.profile: executed by the command interpreter for login shells.
# This file is not read by bash(1), if ~/.bash_profile or ~/.bash_login
# exists.

Então use em ~/.profilevez de~/.bash_profile

nux
fonte
.profile não funcionou para mim. Eu tive que editar .bashrc vim ~/.bashrcentão. ~/.bashrc
Nahid
O uso de .bash_profile não funciona no Ubuntu. Ele usa o Dash como um shell de login da GUI, não o Bash, portanto o bash_profile não é lido.
Jonathan Hartley
Se você editar seu .profile, precisará sair e fazer login novamente para ver as alterações.
Jonathan Hartley
8

Ao invocar um shell de logon, o bash procurará seus arquivos de configuração nesta ordem:

[0] ~/.bash_profile
[1] ~/.bash_login
[2] ~/.profile

Depois de encontrar o primeiro, ele pára de olhar para os outros para que se houver um .bash_profilena minha $HOMEfesta não vai olhar para .bash_logine .profilemais.

A partir desses três nomes de arquivo, o Ubuntu por padrão usa o qual .profilevocê pode renomeá-lo .bash_profilese quiser:

mv ~/.profile ~/.bash_profile

Agora, se abrir um novo shell bash usando bash -l, su - $USER, sudo -u $USER -iou quaisquer outros comandos que corre o bash como um shell de login, ~/.bash_profilevai ficar de origem.

Importante observar:

O que eu falei até agora só se aplica ao próprio Bash, quando você faz login no sistema a partir de uma GUI, o gerente de exibição é responsável por obter os arquivos corretos.

O Ubuntu usa gdm3como seu gerenciador de exibição, se dermos uma olhada em: /etc/gdm3/Xsessionpodemos ver que nenhum dos arquivos será originado, exceto .profile:

# First read /etc/profile and .profile
for file in /etc/profile "$HOME/.profile"; do
  if [ -f "$file" ]; then
    source_with_error_check "$file"
  fi
done

portanto, se você estiver usando uma GUI para efetuar login, mantenha o arquivo sob .profilenome; caso contrário, poderá perder algumas variáveis ​​e configurações em seus ambientes.

Eu acho que a melhor opção é criar um link simbólico para .profile:

ln -s ~/.profile ~/.bash_profile

Agora seus dados residem .profile, gdmnão perdem nada, carregam o .bash_profileque realmente é .profilee, editando cada um deles, você obtém o mesmo resultado.

Está faltando .profile?

Se você não tiver .profile, pegue uma cópia aqui:

cp /etc/skel/.profile ~/.profile

ou

# Remember the note above
cp /etc/skel/.profile ~/.bash_profile
Ravexina
fonte
Mas, se o Bash está procurando ~ / .bash_profile primeiro, por que não está fazendo isso no Ubuntu? O Ubuntu modificou o Bash? Isso parece estranho. man bashno Ubuntu ainda descreve como ele procurará .bash_profile primeiro.
Jonathan Hartley
Ele procura .bash_profile primeiro que não consegue encontrá-lo (porque não existe), depois procura .bash_loginnão consegue encontrá-lo novamente (porque o Ubuntu não usa esses dois nomes) e, finalmente, procura .profilee sim, aí está. Portanto, se você criar um .bash_profilein, ~então você está substituindo o ubuntu ~/.profile, é o comportamento padrão do bash, nada foi modificado aqui.
Ravexina 22/09
Certo, foi o que pensei no começo também! E o que você descreve acontece no RHEL. Mas no Ubuntu, não. Se eu criar um .bash_profile, ele não será lido. Acabei de perceber que isso ocorre porque o Ubuntu não usa mais o 'Bash' como um shell de login da GUI. Ele usa 'Dash'. Eu acho que isso é verdade desde 18.04.
22618 Jonathan Hartley
Você está perdendo o ponto aqui. Na verdade, estamos falando sobre o próprio bash, o que estou dizendo aqui é que o Ubuntu cria '.profile' e não os outros, portanto, se abrirmos um novo bash shell (shell de login), essa é a ordem de ler esses arquivos, não ' Não importa qual distro estamos usando. :)
Ravexina 22/09
Se os leitores renomearem .profile como .bash_profile como sua resposta sugere, então para as pessoas no Ubuntu, esse arquivo não será lido no login nem na abertura de um terminal. Você quebrou o sistema deles. A única maneira que o arquivo será lido é se eles iniciarem sessões bash com o argumento '--login' para torná-lo explicitamente um shell de login. Isso nunca acontecerá automaticamente na área de trabalho.
Jonathan Hartley
5

Isso significa que o arquivo não existe. Mas, você pode criar o arquivo e bashexecuta / origina o arquivo se bashfor chamado como um shell de login. Então, sempre que você fizer login através de um shell (por exemplo, via ssh).

Se você deseja que o conteúdo seja executado sempre que abrir um terminal, modifique o .bashrcarquivo.

caos
fonte
você pode ter uma idéia de por que o arquivo .bash_profile está ausente?
Roledenez
Você pode copiá-lo do /etc/skel/diretório
Frantique 13/08/14
É uma decisão de design canônico. Mas, isso não significa que não pode fazê-lo.
caos
Expliquei que o motivo .bash_profileestá ausente (e não funciona) no Ubuntu nos comentários de outras respostas.
Jonathan Hartley
2

A melhor resposta a ser usada em ~/.profilevez de ~/.bash_profilenão funcionou para mim.

Modificando .bashrctrabalhado

Somente:

vim ~/.bashrc

Nota: Estou usando o Ubuntu WSL.

cryanbhu
fonte
No Linux original, o .profile é aplicado quando você faz login na GUI, se conecta remotamente ou faz login no console, ou seja, depois de pressionar ctrl + shift + F2. Supõe-se que represente a primeira vez que você efetua login na máquina, criando um shell que é pai de todos os outros processos que você criar posteriormente. Suspeito que, na WSL, não exista nada disso, portanto, seu .profile pode nunca ser lido.
Jonathan Hartley
o mesmo para mim. ~/.profileapenas não carregado por padrão no ubuntu 18.04
javapowered 13/06
0

Se você quer dizer o .bashrc, ele o encontrará na sua pasta pessoal. Se não estiver lá, você pode copiá-lo da pasta / etc / skel para a sua pasta pessoal.

Se você precisar de mais informações sobre esse assunto, visite a página de stefaan lippens.

http://stefaanlippens.net/bashrc_and_others

Mentira
fonte