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.
É 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.
.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 .profilefor file in/etc/profile "$HOME/.profile";doif[-f "$file"];then
source_with_error_check "$file"fidone
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
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_profileprimeiro 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.
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.
~/.profile
lugar.Respostas:
O Ubuntu usa
~/.profile
.você pode criar o seu
.bash_profile
no Ubuntu, mas.profile
não será lido.Se lermos o conteúdo .profile:
resultado
Então use em
~/.profile
vez de~/.bash_profile
fonte
vim ~/.bashrc
então. ~/.bashrc
Ao invocar um shell de logon, o bash procurará seus arquivos de configuração nesta ordem:
Depois de encontrar o primeiro, ele pára de olhar para os outros para que se houver um
.bash_profile
na minha$HOME
festa não vai olhar para.bash_login
e.profile
mais.A partir desses três nomes de arquivo, o Ubuntu por padrão usa o qual
.profile
você pode renomeá-lo.bash_profile
se quiser:Agora, se abrir um novo shell bash usando
bash -l
,su - $USER
,sudo -u $USER -i
ou quaisquer outros comandos que corre o bash como um shell de login,~/.bash_profile
vai 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
gdm3
como seu gerenciador de exibição, se dermos uma olhada em:/etc/gdm3/Xsession
podemos ver que nenhum dos arquivos será originado, exceto.profile
:portanto, se você estiver usando uma GUI para efetuar login, mantenha o arquivo sob
.profile
nome; 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
:Agora seus dados residem
.profile
,gdm
não perdem nada, carregam o.bash_profile
que realmente é.profile
e, editando cada um deles, você obtém o mesmo resultado.Está faltando .profile?
Se você não tiver
.profile
, pegue uma cópia aqui:ou
fonte
man bash
no Ubuntu ainda descreve como ele procurará .bash_profile primeiro..bash_profile
primeiro que não consegue encontrá-lo (porque não existe), depois procura.bash_login
não consegue encontrá-lo novamente (porque o Ubuntu não usa esses dois nomes) e, finalmente, procura.profile
e sim, aí está. Portanto, se você criar um.bash_profile
in,~
então você está substituindo o ubuntu~/.profile
, é o comportamento padrão do bash, nada foi modificado aqui..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.Isso significa que o arquivo não existe. Mas, você pode criar o arquivo e
bash
executa / origina o arquivo sebash
for chamado como um shell de login. Então, sempre que você fizer login através de um shell (por exemplo, viassh
).Se você deseja que o conteúdo seja executado sempre que abrir um terminal, modifique o
.bashrc
arquivo.fonte
/etc/skel/
diretório.bash_profile
está ausente (e não funciona) no Ubuntu nos comentários de outras respostas.A melhor resposta a ser usada em
~/.profile
vez de~/.bash_profile
não funcionou para mim.Modificando
.bashrc
trabalhadoSomente:
Nota: Estou usando o Ubuntu WSL.
fonte
~/.profile
apenas não carregado por padrão no ubuntu 18.04Se 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
fonte