Explicando o conteúdo do arquivo ~ / .profile

0
# ~/.profile: executed by the command interpreter for login shells.
# This file is not read by bash(1), if ~/.bash_profile or ~/.bash_login
# exists.
# see /usr/share/doc/bash/examples/startup-files for examples.
# the files are located in the bash-doc package.

# the default umask is set in /etc/profile; for setting the umask
# for ssh logins, install and configure the libpam-umask package.
#umask 022

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

# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/bin" ] ; then
    PATH="$HOME/bin:$PATH"
fi

Alguém pode explicar o conteúdo do arquivo ~/.profile ? Então, quando você entra no arquivo ~/.profile , o que significa toda a escrita?

    
por Jansen Roy 28.03.2016 / 14:57

1 resposta

2

Versão simplificada:

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

Esta parte verifica se ~/.profile está sendo originado por uma instância de Bash, e se esse for o caso, as fontes, por sua vez ~/.bashrc ; Essa é uma maneira de incluir as configurações do usuário armazenadas em ~/.bashrc , por exemplo. também em shells de login, que normalmente não usam ~/.bashrc ;

if [ -d "$HOME/bin" ] ; then
    PATH="$HOME/bin:$PATH"
fi

Esta parte verifica se ~/bin existe e, se esse for o caso, adiciona antes ~/bin ao valor atual de $PATH ; isso é feito para que os possíveis executáveis / scripts presentes em ~/bin tenham precedência sobre executáveis / scripts presentes em outros caminhos incluídos em $PATH (por exemplo, colocando um executável chamado cat in ~/bin , ao executar cat executável seria executado no lugar do usual /bin/cat ).

Versão detalhada:

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

Esta parte verifica se a expansão de $BASH_VERSION tem um comprimento diferente de zero ( if [ -n "$BASH_VERSION" ] ), e se esse for o caso, se a expansão de $HOME/.bashrc existir e for um arquivo regular ( if [ -f "$HOME/.bashrc" ] ), a expansão de $HOME/.bashrc é originada.

Como o Bash define $BASH_VERSION na invocação, verificar se $BASH_VERSION tem um comprimento diferente de zero é uma maneira robusta de determinar se o próprio arquivo está sendo originado por uma instância Bash.

É por isso que ao invocar o Bash como um shell de login no Ubuntu, as configurações do usuário armazenadas em ~/.bashrc estão incluídas (isso não é necessariamente o caso de outras distribuições); Bash em si só origina ~/.profile quando invocado como uma shell de login, e esta é uma maneira de contornar isso;

if [ -d "$HOME/bin" ] ; then
    PATH="$HOME/bin:$PATH"
fi

Esta parte verifica se a expansão de $HOME/bin existe e se é um diretório ( if [ -d "$HOME/bin" ] ) e, se esse for o caso, anexa a expansão de $HOME/bin ao valor atual de $PATH ( PATH="$HOME/bin:$PATH" ; $HOME é normalmente configurado para o diretório pessoal do usuário).

Isso é feito para que possíveis executáveis / scripts presentes na expansão de $HOME/bin tenham precedência sobre executáveis / scripts presentes em outros caminhos incluídos em $PATH .

    
por kos 28.03.2016 / 16:52