Ajustando a variável $PATH no Linux

Neste artigo, vamos aprender como configurar uma variável no $PATH do GNU/Linux. Quando você digita um comando no seu Shell o que você está dizendo é pra ele executar um programa.

Como configurar uma variável no $PATH do GNU/Linux

Neste tutorial, vamos explorar o processo de ajuste da variável $PATH no ambiente GNU/Linux. Quando você insere um comando no seu terminal, na verdade, está solicitando a execução de um programa. Mesmo comandos básicos como ls, cd, mkdir, rm e outros, são apenas programas compactos que geralmente residem em um diretório no seu computador chamado /usr/bin.

Existem outros locais no seu sistema que normalmente contêm programas executáveis. Os mais frequentes são: /usr/local/bin, /usr/local/sbin e /usr/sbin. A localização dos programas e os motivos para isso estão além do escopo deste tutorial, mas um programa executável pode estar praticamente em qualquer lugar do seu sistema, não precisa estar restrito a esses diretórios.

Quando você insere um comando no seu terminal, ele não vai pesquisar em todos os diretórios para encontrar um programa com esse nome, mas apenas em diretórios específicos. Como saber quais são esses diretórios? É simples, eles são parte de uma variável de ambiente chamada $PATH, onde o seu terminal verifica onde procurar.

Para visualizar o que está no seu $PATH, digite:

echo $PATH

Provavelmente, você verá os diretórios mencionados acima, além de alguns outros, todos separados por dois pontos.

Adicionando um diretório ao $PATH

Ocasionalmente, você precisa instalar algum programa que está em outro local do seu sistema, mas não quer ter que digitar o caminho completo dele. Você pode fazer isso facilmente adicionando um diretório à sua variável de ambiente $PATH.

Suponha que você tenha escrito um pequeno script chamado hello.sh e ele esteja localizado em um diretório chamado shell que tem este caminho /home/sempreupdate/Documentos/shell. Este script fornece alguma função útil e você gostaria de executá-lo independentemente do diretório em que estivesse.

Para isso, basta adicionar o caminho do seu arquivo à variável de ambiente $PATH com o seguinte comando:

export PATH=$PATH:/home/sempreupdate/Documentos/shell

Agora você pode executar o seu script em qualquer lugar do seu sistema apenas digitando seu nome (hello.sh), sem ter que incluir o caminho completo dele.

E se você reiniciar seu computador ou abrir um novo terminal?

Sua adição do caminho à variável de ambiente $PATH desapareceu. A variável $PATH é definida pelo seu terminal toda vez que você abre um novo terminal, mas você pode configurá-lo para que ele sempre inclua seu novo caminho a cada novo terminal que você abrir.

Você pode configurar para todos os usuários do sistema colocando o comando acima export PATH=$PATH:/home/sempreupdate/Documentos/shell no final de algum desses arquivos:

  • /etc/profile
  • /etc/profile.d/
  • /etc/bash.bashrc

Ou para um usuário específico colocando o comando acima nesses arquivos:

  • ~/.bashrc
  • ~/.profile

Vou dar um exemplo colocando o caminho do nosso script no arquivo ~/.bashrc. Primeiro, vamos abrir o arquivo com algum editor de texto.

sudo vim ~/.bashrc

Feito isso, vamos colocar esse comando export PATH=$PATH:/home/sempreupdate/Documentos/shell no final do arquivo e depois salvar.

Para que as alterações fiquem disponíveis na sua sessão atual, execute o comando abaixo. Ele vai reexecutar o .bashrc.

source .bashrc

Verificando se o $PATH foi atualizado

Você pode verificar se o seu $PATH foi atualizado executando o comando echo $PATH no terminal. Este comando irá imprimir o valor atual da variável de ambiente $PATH. Se o diretório que você adicionou aparecer na lista, isso significa que o $PATH foi atualizado corretamente. Lembre-se de que os diretórios no $PATH são separados por dois pontos. Aqui está o comando:

echo $PATH

Se o diretório que você adicionou não aparecer na lista, pode ser necessário reiniciar o terminal ou usar o comando source para recarregar o arquivo de configuração do shell, como mostrado no tutorial anterior. Se ainda assim não funcionar, verifique se o comando export PATH=$PATH:/seu/caminho foi adicionado corretamente ao arquivo de configuração do shell (.bashrc, .profile, etc.).

Adicionando mais de um diretório ao $PATH

Para adicionar mais de um diretório à sua variável de ambiente $PATH, você pode usar o comando export várias vezes, uma para cada diretório que deseja adicionar. Aqui está um exemplo de como você pode fazer isso:

export PATH=$PATH:/caminho/para/o/diretorio1<br>export PATH=$PATH:/caminho/para/o/diretorio2<br>export PATH=$PATH:/caminho/para/o/diretorio3

Cada comando export adiciona um diretório ao final do $PATH existente. Lembre-se de substituir /caminho/para/o/diretorio1, /caminho/para/o/diretorio2 e /caminho/para/o/diretorio3 pelos caminhos reais dos diretórios que você deseja adicionar.

Se você quiser adicionar vários diretórios de uma vez, pode fazê-lo em uma única linha, separando cada diretório com dois pontos (:), assim:

export PATH=$PATH:/caminho/para/o/diretorio1:/caminho/para/o/diretorio2:/caminho/para/o/diretorio3

Novamente, substitua /caminho/para/o/diretorio1, /caminho/para/o/diretorio2 e /caminho/para/o/diretorio3 pelos caminhos reais dos diretórios que você deseja adicionar.

Lembre-se de que essas alterações serão válidas apenas para a sessão atual do terminal. Se você quiser que elas sejam permanentes, precisará adicionar os comandos export ao seu arquivo de configuração do shell (como ~/.bashrc ou ~/.profile), conforme explicado no tutorial anterior. Depois de adicionar os comandos, você pode usar o comando source para recarregar o arquivo de configuração do shell e aplicar as alterações à sessão atual. Por exemplo:

source ~/.bashrc

Qual é a diferença entre ~/.bashrc e ~/.profile?

Os arquivos ~/.bashrc e ~/.profile são scripts de inicialização usados pelo shell Bash no GNU/Linux. Eles têm propósitos diferentes e são lidos em momentos diferentes quando um shell é iniciado.

  • ~/.bashrc: Este arquivo é lido por shells interativos não-login. Ele contém comandos que são específicos para o shell Bash. Normalmente, .bashrc é o melhor lugar para adicionar aliases e funções relacionadas ao Bash. Cada vez que você abre um novo terminal em uma sessão já logada, o shell lê e executa este arquivo.
  • ~/.profile: Este arquivo é lido quando o terminal é carregado a partir de um login. Ele contém comandos para configurar variáveis de ambiente. Essas variáveis são herdadas por shells futuros. Quando você se conecta a um sistema via ssh, por exemplo, você obtém um shell de login interativo que lê e executa este arquivo.

É comum as pessoas adicionarem uma instrução no .profile para ler o .bashrc, garantindo que os aliases e funções sejam disponibilizados em todas as sessões. Isso pode ser feito adicionando o seguinte ao seu arquivo .profile:

if [ -f ~/.bashrc ]; then<br>   source ~/.bashrc<br>fi

Essa diferença permite que você separe as configurações que são relevantes para todas as sessões (como variáveis de ambiente e caminhos) daquelas que são relevantes apenas para sessões interativas (como aliases e funções do shell).

Como adicionar um alias ao meu ~/.bashrc?

Claro, adicionar um alias ao seu arquivo ~/.bashrc é uma maneira eficiente de economizar tempo no terminal. Aqui estão os passos:

  1. Abra o arquivo ~/.bashrc com o seu editor de texto preferido. Por exemplo, se você usa o vim, o comando seria:
vim ~/.bashrc
  1. Vá para o final do arquivo e adicione o alias que você deseja. Por exemplo, se você quiser criar um alias chamado c para o comando clear, você adicionaria a seguinte linha:
alias c='clear'
  1. Salve e feche o arquivo.
  2. Para que as alterações entrem em vigor imediatamente, você precisa recarregar o arquivo ~/.bashrc. Você pode fazer isso com o seguinte comando:
source ~/.bashrc

Agora, sempre que você digitar c no terminal e pressionar Enter, o comando clear será executado. Você pode adicionar quantos aliases quiser ao seu arquivo ~/.bashrc seguindo esses passos. Lembre-se de que os aliases definidos dessa maneira serão disponibilizados apenas para o usuário atual. Se você quiser que eles estejam disponíveis para todos os usuários, você precisará adicionar os aliases ao arquivo /etc/bash.bashrc ou /etc/profile.d/ em vez disso. No entanto, isso requer privilégios de superusuário.

Qual é a diferença entre alias e função no Bash?

Qual é a diferença entre alias e função no Bash?

Os aliases e as funções no Bash são ambos recursos poderosos que podem economizar tempo e esforço no terminal. No entanto, eles têm diferenças significativas e são usados em diferentes contextos.

  • Alias: Um alias no Bash é basicamente um atalho para um comando ou uma série de comandos. Eles são úteis para abreviar comandos longos ou complexos que você usa com frequência. Por exemplo, você pode criar um alias para o comando clear chamado c, e sempre que você digitar c no terminal, o comando clear será executado. No entanto, os aliases são limitados em sua funcionalidade. Eles não aceitam argumentos de maneira flexível e não podem realizar operações condicionais ou de loop.
  • Função: As funções no Bash são mais complexas e flexíveis do que os aliases. Elas podem aceitar argumentos e podem conter uma série de comandos, incluindo estruturas de controle como loops e condicionais. Isso as torna mais adequadas para tarefas mais complexas. Por exemplo, você pode criar uma função que aceita um argumento e realiza uma ação diferente dependendo do valor desse argumento.

Em resumo, enquanto os aliases são ótimos para abreviar comandos simples, as funções oferecem muito mais flexibilidade e são mais adequadas para tarefas mais complexas. A escolha entre usar um alias ou uma função geralmente depende da complexidade da tarefa que você está tentando realizar.