<Anterior | Conteúdo | Próxima>
Quando um shell de login sai, bater lê e executa comandos do arquivo ~ / .bash_logout, se existir. Este procedimento é explicado em detalhes no entrar e bater páginas do manual.
7.2.3. Um conjunto típico de arquivos de configuração
7.2.3.1. / etc / exemplo de perfil
Vejamos alguns desses arquivos de configuração. Primeiro / etc / profile é lido, em que variáveis importantes, como
PATH, USER e HOSTNAME estão definidos:
debby: ~> cat / etc / profile
# / etc / profile
# Ambiente amplo do sistema e programas de inicialização, para configuração de login
# Funções e aliases vão para / etc / bashrc
# Manipulação de caminho
if [`id -u` = 0] &&! echo $ PATH | / bin / grep -q "/ sbin"; então PATH = / sbin: $ PATH
fi
if [`id -u` = 0] &&! echo $ PATH | / bin / grep -q "/ usr / sbin"; então PATH = / usr / sbin: $ PATH
fi
if [`id -u` = 0] &&! echo $ PATH | / bin / grep -q "/ usr / local / sbin" então
PATH = / usr / local / sbin: $ PATH
fi
E se ! echo $ PATH | / bin / grep -q "/ usr / X11R6 / bin"; então PATH = "$ PATH: / usr / X11R6 / bin"
fi
debby: ~> cat / etc / profile
# / etc / profile
# Ambiente amplo do sistema e programas de inicialização, para configuração de login
# Funções e aliases vão para / etc / bashrc
# Manipulação de caminho
if [`id -u` = 0] &&! echo $ PATH | / bin / grep -q "/ sbin"; então PATH = / sbin: $ PATH
fi
if [`id -u` = 0] &&! echo $ PATH | / bin / grep -q "/ usr / sbin"; então PATH = / usr / sbin: $ PATH
fi
if [`id -u` = 0] &&! echo $ PATH | / bin / grep -q "/ usr / local / sbin" então
PATH = / usr / local / sbin: $ PATH
fi
E se ! echo $ PATH | / bin / grep -q "/ usr / X11R6 / bin"; então PATH = "$ PATH: / usr / X11R6 / bin"
fi
Estas linhas verificam o caminho a ser definido: se raiz abre um shell (usuário ID 0), é verificado que / sbin, / usr / sbin e
/ usr / local / sbin estão no caminho. Caso contrário, eles são adicionados. É verificado para todos que
/ usr / X11R6 / bin está no caminho.
# Nenhum arquivo principal por padrão ulimit -S -c 0> / dev / null 2> & 1
# Nenhum arquivo principal por padrão ulimit -S -c 0> / dev / null 2> & 1
Todo o lixo vai para / dev / null se o usuário não alterar esta configuração.
USER = `id -un` LOGNAME = $ USER
MAIL = "/ var / spool / mail / $ USUÁRIO"
HOSTNAME = `/ bin / hostname` HISTSIZE = 1000
USER = `id -un` LOGNAME = $ USER
MAIL = "/ var / spool / mail / $ USUÁRIO"
HOSTNAME = `/ bin / hostname` HISTSIZE = 1000
Aqui, as variáveis gerais recebem seus valores apropriados.
if [-z "$ INPUTRC" -a! -f "$ HOME / .inputrc"]; então INPUTRC = / etc / inputrc
fi
if [-z "$ INPUTRC" -a! -f "$ HOME / .inputrc"]; então INPUTRC = / etc / inputrc
fi
Se a variável ENTRADA não está definido, e não há .inputrc no diretório inicial do usuário, o arquivo de controle de entrada padrão é carregado.
exportar PATH USUÁRIO NOME DO LOG MAIL NOME DE ANFITRIÃO HISTORIAR ENTRADA
Todas as variáveis são exportadas, de forma que ficam disponíveis para outros programas que solicitam informações sobre o seu ambiente.
7.2.3.2. O diretório profile.d
para i em /etc/profile.d/*.sh; faça se [-r $ i]; então
. $ i
fi feito desconfigurado eu
para i em /etc/profile.d/*.sh; faça se [-r $ i]; então
. $ i
fi feito desconfigurado eu
Todos os scripts de shell legíveis do /etc/profile.d diretório são lidos e executados. Isso faz coisas como habilitar cor-ls, alias vi para vitalidade, definindo localidades etc. A variável temporária i não está definido para evitar que perturbe o comportamento do shell mais tarde.
7.2.3.3. Exemplo de .bash_profile
Então bater procura por um .bash_profile no diretório inicial do usuário:
debby: ~> cat.bash_profile
########################################################## ###############
# #
# arquivo .bash_profile #
# #
# Executado a partir do shell bash quando você faz login. #
# #
########################################################## ###############
fonte ~ / .bashrc fonte ~ / .bash_login
Este arquivo muito direto instrui seu shell para primeiro ler ~ / .bashrc e depois ~ / .bash_login. Você encontrará o fonte comando de shell embutido regularmente ao trabalhar em um ambiente de shell: é usado para aplicar alterações de configuração ao ambiente atual.
7.2.3.4. Exemplo de .bash_login
O ~ / .bash_login arquivo define a proteção de arquivo padrão, definindo o umask valor, consulte a Seção 3.4.2.2. o ~ / .bashrc arquivo é usado para definir um monte de apelidos e funções específicas do usuário e variáveis de ambiente pessoais. Primeiro lê / Etc / bashrc, que descreve o prompt padrão (PS1) e o valor umask padrão. Depois disso, você pode adicionar suas próprias configurações. Se não ~ / .bashrc existe, / Etc / bashrc é lido por padrão.
7.2.3.5. / etc / bashrc example
Sua / Etc / bashrc arquivo pode ter a seguinte aparência:
debby: ~> cat / etc / bashrc
# / etc / bashrc
# Funções e apelidos em todo o sistema
# O material de ambiente vai para / etc / profile
# por padrão, queremos que isso seja definido.
debby: ~> cat / etc / bashrc
# / etc / bashrc
# Funções e apelidos em todo o sistema
# O material de ambiente vai para / etc / profile
# por padrão, queremos que isso seja definido.
# Mesmo para shells não interativos e não de login.
if [`id -gn` =` id -un` -a `id -u` -gt 99]; então umask 002
outro
umask 022
fi
# Mesmo para shells não interativos e não de login.
if [`id -gn` =` id -un` -a `id -u` -gt 99]; então umask 002
outro
umask 022
fi
Essas linhas definem o umask valor. Então, dependendo do tipo de shell, o prompt é definido:
# somos um shell interativo? if ["$ PS1"]; então
if [-x / usr / bin / tput]; então
if ["x`tput kbs`"! = "x"]; então
# Não podemos fazer isso com o terminal "burro" stty erase `tput kbs`
elif [-x / usr / bin / wc]; então
if ["` tput kbs | wc -c `" -gt 0]; então
# Não podemos fazer isso com o terminal "burro" stty erase `tput kbs`
fi fi
fi
caso $ TERM em
xterm *)
if [-e / etc / sysconfig / bash-prompt-xterm]; então PROMPT_COMMAND = / etc / sysconfig / bash-prompt-xterm
outro
PROMPT_COMMAND = 'echo -ne "\ 033] 0; $ {USER} @ $ {HOSTNAME %%. *}: \
$ {PWD / $ HOME / ~} \ 007 "'
fi
;;
*)
[-e / etc / sysconfig / bash-prompt-default] && PROMPT_COMMAND = \
/ etc / sysconfig / bash-prompt-default
;;
esac
["$ PS1" = "\\ s - \\ v \\\ $"] && PS1 = "[\ u @ \ h \ W] \\ $"
if ["x $ SHLVL"! = "x1"]; then # Não somos um shell de login para i em /etc/profile.d/*.sh; Faz
se [-x $ i]; então
. $ i
fi
feito
fi
fi
# somos um shell interativo? if ["$ PS1"]; então
if [-x / usr / bin / tput]; então
if ["x`tput kbs`"! = "x"]; então
# Não podemos fazer isso com o terminal "burro" stty erase `tput kbs`
elif [-x / usr / bin / wc]; então
if ["` tput kbs | wc -c `" -gt 0]; então
# Não podemos fazer isso com o terminal "burro" stty erase `tput kbs`
fi fi
fi
caso $ TERM em
xterm *)
if [-e / etc / sysconfig / bash-prompt-xterm]; então PROMPT_COMMAND = / etc / sysconfig / bash-prompt-xterm
outro
PROMPT_COMMAND = 'echo -ne "\ 033] 0; $ {USER} @ $ {HOSTNAME %%. *}: \
$ {PWD / $ HOME / ~} \ 007 "'
fi
;;
*)
[-e / etc / sysconfig / bash-prompt-default] && PROMPT_COMMAND = \
/ etc / sysconfig / bash-prompt-default
;;
esac
["$ PS1" = "\\ s - \\ v \\\ $"] && PS1 = "[\ u @ \ h \ W] \\ $"
if ["x $ SHLVL"! = "x1"]; then # Não somos um shell de login para i em /etc/profile.d/*.sh; Faz
se [-x $ i]; então
. $ i
fi
feito
fi
fi
7.2.3.6. Exemplo de .bash_logout
Após o logout, os comandos em ~ / .bash_logout são executados, o que pode, por exemplo, limpar o terminal, para que você tenha uma janela limpa ao sair de uma sessão remota ou ao sair do console do sistema:
debby: ~> gato .bash_logout
# ~ / .bash_logout
remover filtragem
debby: ~> gato .bash_logout
# ~ / .bash_logout
remover filtragem
Vamos examinar mais de perto como esses scripts funcionam na próxima seção. Guarda info bater bem perto.