O aplicativo de shell /bin/bash
        (doravante referenciado apenas como "o shell") usa uma coleção de
        arquivos de iniciação para auxiliar a criar um ambiente. Cada arquivo
        tem um uso específico e possivelmente afete diferentemente os
        ambientes de login e os interativos. Os arquivos no diretório
        /etc geralmente fornecem configurações
        globais. Se um arquivo equivalente existir no seu diretório home,
        [então] ele possivelmente substitua as configurações globais.
      
        Um shell de login interativo é iniciado depois de um login exitoso,
        usando o /bin/login, pela leitura do
        arquivo /etc/passwd. Essa invocação do
        shell normalmente lê /etc/profile e o
        equivalente privado dele ~/.bash_profile (ou o ~/.profile, se chamado como /bin/sh) assim que iniciar.
      
        Um shell de não login interativo normalmente é iniciado em linha de
        comando usando um aplicativo de shell (por exemplo, [prompt]$/bin/bash) ou pelo comando
        /bin/su. Um shell de
        não login interativo também é iniciado com um aplicativo de terminal,
        tal como o xterm ou o
        konsole, a partir de
        dentro de um ambiente gráfico. Esse tipo de invocação do shell
        normalmente copia o ambiente do(a) ancestral e, então, lê o arquivo
        ~/.bashrc do(a) usuário(a) para
        instruções adicionais de configuração de iniciação.
      
Um shell não interativo usualmente está presente quando um script de shell está executando. Ele é não interativo, pois está processando um script e não aguardando por entradas geradas de usuário(a) entre os comandos. Para essas invocações de shell, somente o ambiente herdado a partir do shell ancestral é usado.
        O arquivo ~/.bash_logout não é usado
        para uma invocação do shell. Ele é lido e executado quando um(a)
        usuário(a) sai de um shell de login interativo.
      
        Muitas distribuições usam o /etc/bashrc
        para a inicialização abrangente ao sistema dos shells de não login.
        Esse arquivo usualmente é chamado a partir do arquivo ~/.bashrc do(a) usuário(a) e não é construído
        diretamente no próprio bash. Essa convenção é seguida
        nesta seção.
      
Para mais informação, veja-se info bash -- Nós: Arquivos de Iniciação do Bash e Shells Interativos.
        
          A maioria das instruções abaixo é usada para criar arquivos
          localizados na estrutura de diretório /etc, o que exige que você execute os comandos
          como o(a) usuário(a) root. Se você
          escolher criar os arquivos nos diretórios home dos(as) usuários(as)
          em vez disso, [então] você deveria executar os comandos como um(a)
          usuário(a) desprivilegiado(a).
        
Observações de Editor(a): https://wiki.linuxfromscratch.org/blfs/wiki/bash-shell-startup-files
          Aqui está um /etc/profile base. Esse
          arquivo começa configurando algumas funções auxiliares e alguns
          parâmetros básicos. Ele especifica alguns parâmetros de histórico
          do bash e, para
          propósitos de segurança, desabilita a manutenção de um arquivo
          permanente de histórico para o(a) usuário(a) root. Em seguida, ele chama conjuntos de
          comandos sequenciais pequenos e de propósito único no diretório
          /etc/profile.d para fornecer a maior
          parte da inicialização.
        
cat > /etc/profile << "EOF"
# Begin /etc/profile
# Written for Beyond Linux From Scratch
# by James Robertson <jameswrobertson@earthlink.net>
# modifications by Dagmar d'Surreal <rivyqntzne@pbzpnfg.arg>
# System wide environment variables and startup programs.
# System wide aliases and functions should go in /etc/bashrc.  Personal
# environment variables and startup programs should go into
# ~/.bash_profile.  Personal aliases and functions should go into
# ~/.bashrc.
# Functions to help us manage paths.  Second argument is the name of the
# path variable to be modified (default: PATH)
pathremove () {
        local IFS=':'
        local NEWPATH
        local DIR
        local PATHVARIABLE=${2:-PATH}
        for DIR in ${!PATHVARIABLE} ; do
                if [ "$DIR" != "$1" ] ; then
                  NEWPATH=${NEWPATH:+$NEWPATH:}$DIR
                fi
        done
        export $PATHVARIABLE="$NEWPATH"
}
pathprepend () {
        pathremove $1 $2
        local PATHVARIABLE=${2:-PATH}
        export $PATHVARIABLE="$1${!PATHVARIABLE:+:${!PATHVARIABLE}}"
}
pathappend () {
        pathremove $1 $2
        local PATHVARIABLE=${2:-PATH}
        export $PATHVARIABLE="${!PATHVARIABLE:+${!PATHVARIABLE}:}$1"
}
export -f pathremove pathprepend pathappend
# Set the initial path
export PATH=/usr/bin
# Attempt to provide backward compatibility with LFS earlier than 11
if [ ! -L /bin ]; then
        pathappend /bin
fi
if [ $EUID -eq 0 ] ; then
        pathappend /usr/sbin
        if [ ! -L /sbin ]; then
                pathappend /sbin
        fi
        unset HISTFILE
fi
# Set up some environment variables.
export HISTSIZE=1000
export HISTIGNORE="&:[bf]g:exit"
# Set some defaults for graphical systems
export XDG_DATA_DIRS=${XDG_DATA_DIRS:-/usr/share}
export XDG_CONFIG_DIRS=${XDG_CONFIG_DIRS:-/etc/xdg}
export XDG_RUNTIME_DIR=${XDG_RUNTIME_DIR:-/tmp/xdg-$USER}
for script in /etc/profile.d/*.sh ; do
        if [ -r $script ] ; then
                . $script
        fi
done
unset script
# End /etc/profile
EOF
        
            Agora crie o diretório /etc/profile.d, onde os scripts individuais da
            inicialização são colocados:
          
install --directory --mode=0755 --owner=root --group=root /etc/profile.d
            Usar o script de completação do bash abaixo é controverso. Nem todos(as) os(as) usuários(as) gostam dele. Ele adiciona muitas (usualmente mais que mil (1.000)) linhas ao ambiente do bash e torna difícil usar o comando 'set' para examinar variáveis simples de ambiente. Omitir-se este script não interfere na habilidade do bash de usar a tecla tab para a completação de nome de arquivo.
Este script importa scripts de completação do bash, instalados por muitos outros pacotes do BLFS, para permitir a completação de linha de comando TAB.
cat > /etc/profile.d/bash_completion.sh << "EOF"
# Início /etc/profile.d/bash_completion.sh
# Importa scripts de completação do bash
# Se o pacote "bash-completion" estiver instalado, use configuração dele ao invés
if [ -f /usr/share/bash-completion/bash_completion ]; then
  # Verificar Bash interativo e que já não fomos carregados.
  if [ -n "${BASH_VERSION-}" -a -n "${PS1-}" -a -z "${BASH_COMPLETION_VERSINFO-}" ]; then
    # Verificar versão do Bash suficientemente recente.
    if [ ${BASH_VERSINFO[0]} -gt 4 ] || \
       [ ${BASH_VERSINFO[0]} -eq 4 -a ${BASH_VERSINFO[1]} -ge 1 ]; then
       [ -r "${XDG_CONFIG_HOME:-$HOME/.config}/bash_completion" ] && \
            . "${XDG_CONFIG_HOME:-$HOME/.config}/bash_completion"
       if shopt -q progcomp && [ -r /usr/share/bash-completion/bash_completion ]; then
          # Carregar código de completação.
          . /usr/share/bash-completion/bash_completion
       fi
    fi
  fi
else
  # bash-completions não estão instaladas; use somente o diretório de completação do Bash
  if shopt -q progcomp; then
    for script in /etc/bash_completion.d/* ; do
      if [ -r $script ] ; then
        . $script
      fi
    done
  fi
fi
# Fim /etc/profile.d/bash_completion.sh
EOF
          Tenha certeza de que o diretório existe:
install --directory --mode=0755 --owner=root --group=root /etc/bash_completion.d
Para uma instalação mais completa, veja-se https://wiki.linuxfromscratch.org/blfs/wiki/bash-shell-startup-files#bash-completions.
            Este script usa os arquivos ~/.dircolors e /etc/dircolors para controlar as cores dos
            nomes de arquivos em uma listagem de diretório. Eles controlam a
            saída gerada colorida de coisas como ls --color. A explicação do
            como inicializar esses arquivos está ao final desta seção.
          
cat > /etc/profile.d/dircolors.sh << "EOF"
# Setup for /bin/ls and /bin/grep to support color, the alias is in /etc/bashrc.
if [ -f "/etc/dircolors" ] ; then
        eval $(dircolors -b /etc/dircolors)
fi
if [ -f "$HOME/.dircolors" ] ; then
        eval $(dircolors -b $HOME/.dircolors)
fi
EOF
        
            Este script adiciona alguns caminhos úteis à PATH e pode ser usado para personalizar outras
            variáveis de ambiente relacionadas a PATH (por exemplo,
            LD_LIBRARY_PATH, etc) que possivelmente sejam necessárias para
            todos(as) os(as) usuários(as).
          
cat > /etc/profile.d/extrapaths.sh << "EOF"
if [ -d /usr/local/lib/pkgconfig ] ; then
        pathappend /usr/local/lib/pkgconfig PKG_CONFIG_PATH
fi
if [ -d /usr/local/bin ]; then
        pathprepend /usr/local/bin
fi
if [ -d /usr/local/sbin -a $EUID -eq 0 ]; then
        pathprepend /usr/local/sbin
fi
if [ -d /usr/local/share ]; then
        pathprepend /usr/local/share XDG_DATA_DIRS
fi
# Set some defaults before other applications add to these paths.
pathappend /usr/share/info INFOPATH
EOF
          
            
              O programa man
              deduz automaticamente o caminho de pesquisa para páginas de
              manual examinando o conteúdo da variável PATH; veja-se manpath(5) para
              detalhes. Configurar a variável MANPATH possivelmente substitua a dedução
              automática, de forma que os(as) editores(as) do BLFS não
              recomendam configurá-la. Se você precisar configurá-la por
              qualquer motivo, é melhor iniciar o valor dela com dois pontos
              (:), por exemplo MANPATH=:/opt/somepkg/share/man:/opt/otherpkg/share/man,
              de forma que os caminhos listados na variável MANPATH sejam pospostos ao valor deduzido
              automaticamente em vez de substituí-lo.
            
            Este script configura o arquivo padrão de configuração
            inputrc. Se o(a) usuário(a) não
            tiver configurações individuais, [então] usa o arquivo global.
          
cat > /etc/profile.d/readline.sh << "EOF"
# Configura a variável de ambiente "INPUTRC".
if [ -z "$INPUTRC" -a ! -f "$HOME/.inputrc" ] ; then
        INPUTRC=/etc/inputrc
fi
export INPUTRC
EOF
        Configurar-se o valor do umask é importante para a segurança. Aqui as permissões padrão de escrita do grupo são desligadas para os(as) usuários(as) de sistema e quando o nome do(a) usuário(a) e o nome do grupo não forem os mesmos.
cat > /etc/profile.d/umask.sh << "EOF"
# Por padrão, a máscara de usuário(a) deveria ser configurada.
if [ "$(id -gn)" = "$(id -un)" -a $EUID -gt 99 ] ; then
  umask 002
else
  umask 022
fi
EOF
        Este script configura uma variável de ambiente necessária para o suporte ao idioma nativo. Uma discussão completa acerca de se determinar esta variável pode ser encontrada na página Configurando o Local do Sistema.
cat > /etc/profile.d/i18n.sh << "EOF"
# Configura variáveis de i18n
for i in $(locale); do
  unset ${i%=*}
done
if [[ "$TERM" = linux ]]; then
  export LANG=C.UTF-8
else
  source /etc/locale.conf
  for i in $(locale); do
    key=${i%=*}
    if [[ -v $key ]]; then
      export $key
    fi
  done
fi
EOF
        
            Outra inicialização pode facilmente ser adicionada ao
            profile adicionando-se scripts
            adicionais ao diretório /etc/profile.d.
          
          Aqui está um /etc/bashrc de base. Os
          comentários no arquivo deveriam explicar tudo o que você precisa.
        
cat > /etc/bashrc << "EOF"
# Begin /etc/bashrc
# Written for Beyond Linux From Scratch
# by James Robertson <jameswrobertson@earthlink.net>
# updated by Bruce Dubbs <bdubbs@linuxfromscratch.org>
# System wide aliases and functions.
# System wide environment variables and startup programs should go into
# /etc/profile.  Personal environment variables and startup programs
# should go into ~/.bash_profile.  Personal aliases and functions should
# go into ~/.bashrc
# Provides colored /bin/ls and /bin/grep commands.  Used in conjunction
# with code in /etc/profile.
alias ls='ls --color=auto'
alias grep='grep --color=auto'
# Provides prompt for interactive shells, specifically shells started
# in the X environment. [Review the LFS archive thread titled
# PS1 Environment Variable for a great case study behind this script
# addendum.]
NORMAL="\[\e[0m\]"
RED="\[\e[1;31m\]"
GREEN="\[\e[1;32m\]"
if [[ $EUID == 0 ]] ; then
  PS1="$RED\u [ $NORMAL\w$RED ]# $NORMAL"
else
  PS1="$GREEN\u [ $NORMAL\w$GREEN ]\$ $NORMAL"
fi
unset RED GREEN NORMAL
# GnuPG wants this or it'll fail with pinentry-curses under some
# circumstances (for example signing a Git commit)
tty -s && export GPG_TTY=$(tty)
# End /etc/bashrc
EOF
        
          Para mais informação acerca das sequências de escape que você pode
          usar para o seu prompt (isto é, a variável de ambiente PS1), veja-se info
          bash -- Nó: Imprimindo
          um Prompt.
        
          Aqui está um ~/.bash_profile de base.
          Se você quiser que cada usuário(a) novo(a) tenha esse arquivo
          automaticamente, [então] apenas mude a saída gerada do comando para
          o /etc/skel/.bash_profile e verifique
          as permissões depois que o comando for executado. Você pode, então,
          copiar o /etc/skel/.bash_profile para
          os diretórios home dos(as) usuários(as) já existentes, incluindo
          o(a) root, e configurar o(a)
          proprietário(a) e o grupo apropriadamente.
        
cat > ~/.bash_profile << "EOF"
# Início ~/.bash_profile
# Escrito para o Beyond Linux From Scratch
# por James Robertson <jameswrobertson@earthlink.net>
# atualizado por Bruce Dubbs <bdubbs@linuxfromscratch.org>
# Variáveis de ambiente e aplicativos de inicialização pessoais.
# Alias e funções pessoais deveriam ir em ~/.bashrc. Variáveis de
# ambiente e aplicativos de inicialização abrangentes ao sistema estão
# em /etc/profile. Alias e funções abrangentes ao sistema estão em /etc/bashrc.
if [ -f "$HOME/.bashrc" ] ; then
  source $HOME/.bashrc
fi
if [ -d "$HOME/bin" ] ; then
  pathprepend $HOME/bin
fi
# Ter-se o "." no PATH é perigoso.
#if [ $EUID -gt 99 ]; then
#  pathappend .
#fi
# Fim ~/.bash_profile
EOF
      
          Aqui está um ~/.profile de base. Os
          comentários e as instruções para se usar o /etc/skel para o .bash_profile acima também se aplicam aqui.
          Somente os nomes dos arquivos alvo são diferentes.
        
cat > ~/.profile << "EOF"
# Início ~/.profile
# Variáveis de ambiente e aplicativos de inicialização pessoais.
if [ -d "$HOME/bin" ] ; then
  pathprepend $HOME/bin
fi
# Configura variáveis de internacionalização específicas de usuário(a).
#export LANG=<ll>_<CC>.<charmap><@modifiers>
# Fim ~/.profile
EOF
      
          Aqui está um ~/.bashrc de base.
        
cat > ~/.bashrc << "EOF"
# Início ~/.bashrc
# Escrito para o Beyond Linux From Scratch
# por James Robertson <jameswrobertson@earthlink.net>
# Alias e funções pessoais.
# Variáveis de ambiente e aplicativos da inicialização pessoais deveriam
# ir em ~/.bash_profile. Variáveis de ambiente e aplicativos da
# inicialização abrangentes ao sistema estão em /etc/profile. Alias e
# funções abrangentes ao sistema estão em /etc/bashrc.
if [ -f "/etc/bashrc" ] ; then
  source /etc/bashrc
fi
# Configura variáveis de internacionalização específicas de usuário(a).
#export LANG=<ll>_<CC>.<charmap><@modifiers>
# Fim ~/.bashrc
EOF
      
          Este é um ~/.bash_logout vazio que
          pode ser usado como um modelo. Você perceberá que o ~/.bash_logout de base não inclui um comando
          clear. Isso é
          porque o clear é manuseado no arquivo /etc/issue.
        
cat > ~/.bash_logout << "EOF"
# Início ~/.bash_logout
# Escrito para o Beyond Linux From Scratch
# por James Robertson <jameswrobertson@earthlink.net>
# Itens pessoais a realizar quando do logout.
# Fim ~/.bash_logout
EOF
      
          Se você quiser usar o recurso dircolors, então execute o seguinte comando. As
          etapas de configuração do /etc/skel
          mostradas acima também podem ser usadas aqui para fornecer um
          arquivo ~/.dircolors quando um(a)
          usuário(a) novo(a) for configurado(a). Como antes, apenas mude o
          nome de arquivo da saída gerada no seguinte comando e se assegure
          de que as permissões, proprietário(a) e grupo estejam corretas nos
          arquivos criados e (ou) copiados.
        
dircolors -p > /etc/dircolors
          Se desejar personalizar as cores usadas para os diferentes tipos de
          arquivo, [então] você pode editar o arquivo /etc/dircolors. As instruções para configurar as
          cores estão embutidas no arquivo.
        
Finalmente, Ian Macdonald escreveu uma excelente coleção de dicas e de truques para melhorar o teu ambiente de shell. Você consegue lê-la online em https://caliban.org/bash/index.shtml.