ubuntu: profile.d e .bash_profile ausentes

1

Eu fiz algumas leituras sobre a inicialização do Linux, etc e notei que no meu diretório home não está presente uma pasta profile.d :

/home/user/profile.d/ # Doesn't exists

e nem um arquivo .bash_profile :

/home/user/.bash_profile # Doesn't exists

existe uma razão para isso?

Ubuntu 15.04, gnome

    
por Cybex 13.10.2015 / 11:01

1 resposta

0

Resposta curta: tudo bem.

Existem muitos arquivos de usuário de inicialização porque um usuário pode decidir fazer login em uma conta de computador de várias maneiras diferentes, do console, com um shell interativo ou não interativo, com diferentes tipos de shells. Não é uma prerrogativa de todos os usuários, mas com a necessidade de manter uma compatibilidade com versões anteriores , acabou por complicar um pouco as coisas. : -)

  • Um diretório profile.d não deve estar em seu diretório home : o% /etc/profile.d contém scripts com arquivos de inicialização específicos do aplicativo, que também são executados no tempo de inicialização por A concha. É um diretório válido para todos os usuários, por isso é criado sob o caminho /etc/ e não sob cada diretório pessoal do usuário.

  • O arquivo ~/.bash_profile é um dos arquivos de inicialização pessoal e, quando existe, é armazenado em cada home do usuário. Mas não é necessário que exista. Ele deve conter os comandos específicos do bash a serem executados ao iniciar um shell de login ( ~/.profile também pode ser lido de diferentes shells, que geralmente entendem uma sintaxe diferente) do bash um).

Lendo mais na seção INVOCATION de man bash

When bash is invoked as an interactive login shell (...) it first reads and executes commands from the file /etc/profile, if that file exists.
After reading that file, it looks for ~/.bash_profile, ~/.bash_login, and ~/.profile, in that order, and reads and executes commands from the first one that exists and is readable.

Portanto, se você tiver um arquivo ~/.bash_profile , ele não será lido em ~/.profile , se não for chamado (ou originado) em um dos outros arquivos.

Note que

When an interactive shell that is not a login shell is started, bash reads and executes commands from /etc/bash.bashrc and ~/.bashrc, if these files exist.

De alguma versão do Ubuntu 12 (e com certeza de 13.10) no .profile é originado o ~/.bashrc .

This can cause unexpected behavior when running login shells (such as when ssh into the machine for example) where the user would not expect to have ~/.bashrc sourced.

Referência:

por 14.10.2015 / 14:20