Por que alguém pode adicionar ~ / .profile a ~ / .bash_profile?

4

Ao instalar o RVM , o usuário recebe a seguinte mensagem:

* WARNING: You have '~/.profile' file, you might want to load it,
  to do that add the following line to '/home/dotancohen/.bash_profile':

    source ~/.profile

Estou preocupado porque meu arquivo ~ / .profile contém xmodmap ~/.Xmodmap , o que obviamente eu não quero executar (trocando minhas teclas CapsLock e ESC) toda vez que eu abro um novo shell.

Por que os desenvolvedores de RVM inteligentes sugerem o fornecimento de .profile em .bash_profile ?

    
por dotancohen 06.01.2016 / 15:55

2 respostas

7

.profile e .bash_profile são idênticos em termos de quando devem ser executados: são executados quando você faz login. A diferença é que somente o bash executa .bash_profile ; As conchas de estilo Bourne (traço, ksh, etc.) são executadas em .profile . O próprio Bash executa .profile se .bash_profile não existir.

Mesmo se você tiver o bash como seu shell de login, .profile é frequentemente aquele que é executado quando você faz login no modo gráfico - muitas distribuições configuram o script de inicialização da sessão X para executar em sh e carregar .profile .

Daí o conselho para usar .profile em vez de .bash_profile para fazer coisas como definir variáveis de ambiente. A menos que você absolutamente precise de recursos específicos do bash, basta colocar tudo em .profile . Mas mesmo se você fizer isso, há uma razão para manter um .bash_profile , que é quando o bash o carrega, ele não carrega .bashrc , mesmo que seja interativo. Portanto, para a maioria das pessoas, ~/.bash_profile deve consistir dessas duas linhas:

. ~/.profile
case  $- in *i*) . ~/.bashrc;; esac

Você não deve executar xmodmap de .profile . Isso não é executado quando você abre um novo shell, mas ele é executado, por exemplo, quando você efetua login remotamente com o SSH com o encaminhamento do X11. Infelizmente, não há arquivo padrão que é carregado quando você faz login no modo gráfico. O Debian carrega ~/.xsessionrc (acho que isso se aplica a todos os gerenciadores de exibição, exceto o Gdm, que carrega ~/.xprofile ); outras distribuições possuem configurações diferentes. Se você precisar de portabilidade de distribuição cruzada, pode ser mais fácil configurar seu ambiente de área de trabalho para executar xmodmap quando for iniciado. Se tudo o que você está fazendo é trocar CapsLock e Ctrl, isso pode ser feito com configurações de XKB que os ambientes de desktop mais modernos fornecem uma interface.

    
por 07.01.2016 / 02:08
3

Lembre-se que o bash (1) apenas lê .bash_profile , outras derivações do shell Bourne apenas leem .profile . Se você, às vezes, usa outro shell, deseja manter .profile .

    
por 06.01.2016 / 17:07

Tags