Existem variáveis de ambiente para melhorar e padronizar o seu ambiente shell em sistemas Linux. Existem variáveis de ambiente padrão que o sistema configura para si, mas também pode configurar as suas próprias variáveis de ambiente, ou opcionalmente alterar as variáveis padrão para satisfazer as suas necessidades.
Iniciar com o comando env
Se quiser ver as variáveis de ambiente, use o comando env
e procure as palavras em todas as letras maiúsculas na extrema esquerda do output. Estas são as variáveis de ambiente, e os seus valores estão à direita:
Omiti a saída da variável LS_COLORS
porque é muito longa. Experimente este comando no seu sistema para ver como é a saída completa.
Muitas variáveis de ambiente são definidas e depois exportadas do ficheiro /etc/profile
e do ficheiro /etc/bashrc
. Há uma linha em /etc/profile
que lê:
export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE HISTCONTROL
Para fazer alterações permanentes às variáveis de ambiente para todas as novas contas, vá para o seu /etc/skel
ficheiros, tais como .bashrc
, e altere as que já lá estão ou introduza as novas contas. Quando se criam novos utilizadores, estes /etc/skel
ficheiros serão copiados para o directório home do novo utilizador.
Explorar níveis shell (SHLVL)
Para chamar o valor de uma única variável de ambiente, introduza o seguinte comando, usando SHLVL
(Nível Shell) como exemplo:
$ echo $SHLVL 1
Esta variável muda dependendo de quantas subcasas tiver abertas. Por exemplo, introduza bash
duas vezes e depois emita novamente o comando:
$ bash $ bash echo $SHLVL 3
Um nível de concha de três significa que tem duas conchas profundas, portanto digite exit
duas vezes para regressar à sua concha normal.
Manipulando a sua variável PATH
A variável PATH
contém o caminho de pesquisa para executar comandos e scripts. Para ver o seu PATH
, introduza:
$ echo $PATH /home/khess/.local/bin:/home/khess/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin
Mudeporáriamente o seu PATH
introduzindo o seguinte comando para adicionar /opt/bin
:
$ PATH=$PATH:/opt/bin$ echo $PATH /home/khess/.local/bin:/home/khess/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/opt/bin
A alteração é temporária para a sessão actual. Não é permanente porque não foi introduzida no ficheiro .bashrc
. Para tornar a alteração permanente, introduza o comando PATH=$PATH:/opt/bin
no ficheiro .bashrc
do seu directório home.
Ao fazer isto, está a criar uma nova variável PATH
anexando um directório à variável actual PATH
$PATH
. Um dois pontos (:
) separa PATH
entradas.
Desfazendo $USER, $PWD, e $LOGNAME
Tinha uma teoria que penso ter sido dissipada pelo meu próprio bom senso. A minha teoria era que os comandos pwd
e whoami
provavelmente apenas leram e ecoaram o conteúdo das variáveis da concha $PWD
e $USER
ou $LOGNAME
, respectivamente. Para minha surpresa, depois de olhar para o código fonte, eles não o fazem. Talvez devesse reescrevê-los para fazer exactamente isso. Não há razão para adicionar múltiplas bibliotecas e quase 400 linhas de código C para exibir o directório de trabalho. Pode simplesmente ler $PWD
e ecoar isso para o ecrã (stdout). O mesmo vale para whoami
com $USER
ou $LOGNAME
.
Se quiser ver o código fonte por si próprio, está no GitHub e noutros locais. Se verificar que estes programas (ou outros) utilizam variáveis shell, gostaria de saber mais sobre isso. É certo que não sou muito bom a ler código fonte C, por isso poderiam muito bem usar variáveis shell e eu nunca o saberia. Apenas não pareciam saber, pelo que li e consegui compreender.
Jogando o jogo $SHELL
Nesta última visão geral das variáveis de ambiente, quero mostrar-vos como o $SHELL
variável vem a calhar. Não tem de permanecer na sua concha predefinida, que é provavelmente o Bash. Pode entrar e trabalhar em qualquer shell que esteja instalada no sistema. Para descobrir que shells estão instaladas no seu sistema, use o seguinte comando:
$ cat /etc/shells /bin/sh /bin/bash /usr/bin/sh /usr/bin/bash
Pode usar qualquer uma destas shells e ter coisas diferentes a acontecer em cada uma delas se estiver tão inclinado. Mas, digamos que você é um administrador Solaris e quer usar a concha Korn. Pode alterar a sua concha padrão para /bin/ksh
usando o comando chsh
:
$ chsh Changing shell for khess. New shell : /bin/ksh Password: Shell changed.
Agora, se escrever echo $SHELL
, a resposta será /bin/bash
, pelo que terá de sair e entrar novamente para ver a alteração. Uma vez que saia e entre, receberá uma resposta diferente a echo $SHELL
.
Pode introduzir outras conchas e echo $SHELL
deve comunicar a sua concha actual e $SHLVL
, o que o manterá orientado quanto ao número de conchas profundas que possui.
Configurando as suas próprias variáveis de ambiente
Pode definir as suas próprias variáveis na linha de comando por sessão, ou torná-las permanentes colocando-as no ficheiro ~/.bashrc
~/.profile
, ou seja qual for o ficheiro de arranque que utilize para a sua shell padrão. Na linha de comando, introduza a variável de ambiente e o seu valor como fez anteriormente ao alterar o PATH
variável.
Embrulhando
Variável de ambiente ou de concha são úteis tanto para utilizadores, administradores de sistema, como para programadores. São úteis na linha de comando e em scripts. Utilizei-as ao longo dos anos para muitos propósitos diferentes, e embora algumas delas sejam provavelmente um pouco pouco pouco convencionais, funcionaram e ainda funcionam. Crie os seus próprios ou utilize os que lhe são dados pelo sistema e as aplicações instaladas. Eles podem verdadeiramente enriquecer a sua experiência de utilizador Linux.
Como nota lateral sobre variáveis e shells, alguém pensa que aqueles que programam no JSON só deveriam ser autorizados a utilizar o Bourne Shell? Discuta.
0 comentários