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:
- Abra o arquivo
~/.bashrc
com o seu editor de texto preferido. Por exemplo, se você usa o vim, o comando seria:
vim ~/.bashrc
- 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 comandoclear
, você adicionaria a seguinte linha:
alias c='clear'
- Salve e feche o arquivo.
- 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
chamadoc
, e sempre que você digitarc
no terminal, o comandoclear
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.