SN

Sergio Napolitano30/04/2023 03:14
Compartilhe

Linux - Absolute and Relative Pathnames

  • #Linux
Disclaimer: O exemplo que é citado abaixo é bem simples, e a idéia é apenas apresentar o conceito para quem não tem familiaridade com terminal Linux. Se você já é um usuário experiente, sinta-se à vontade para sugerir melhorias ou colaborar com outros exemplos que possam fomentar o aprendizado.

O Linux é um sistema operacional fantástico e apaixonante. Sobram motivos para que seja o sistema operacional mais utilizado para servidores na web. E neste tipo de ambiente, o acesso geralmente ocorre por um terminal.

Mesmo para os utilizadores mais experientes do Windows, que já estão familiarizados com o terminal do windows (Powershell / CMD / Windows Terminal), existem algumas diferenças que são muito perceptíveis na utilização do terminal Linux.

A diferença que eu gostaria de destacar para trabalhar o tema proposto é que no Linux não existem identificações de partições por letras (C:, D:, etc). Em um sistema Linux, todo o sistema de arquivos deriva do diretório principal "/" e é neste ponto que geralmente começam as dúvidas para os amantes das "janelinhas cheias de ícones". Num primeiro momento pode parecer que no terminal Linux não tem nem um ponto de referência, mas na verdade as coisas só estão sendo representadas de outra forma.

Eu acredito que podemos simplificar as coisas e trazer um pouco de clareza neste contexto compreendendo alguns pontos chaves, tal qual o padrão FHS e o conceito de Caminho Absoluto e Caminho Relativo.

Sabendo que no Linux cada diretório tem sua destinação específica (ver padrão FHS) e que tudo começa na raiz (diretório "/"), a localização de um arquivo ou pasta no sistema de arquivos Linux pode ser referenciado de duas maneiras:

1) Através do Caminho Absoluto, onde apontamos todo o caminho à partir da raiz. Considere o seguinte teste para fins de exemplo, onde vamos verificar o diretório atual com o comando pwd (print work directory), criar o arquivo file.txt na pasta atual e listar o arquivo "file.txt" utilizando o caminho absoluto que acabamos de criar:

$ pwd
$ touch /home/user/file.txt
$ ls -la /home/user/file.pdf

2) Através do Caminho Relativo, onde apontamos o destino com base na nossa localização no momento em que o comando é executado. No exemplo abaixo, considere que estamos no diretório /home/user e repetiremos o que foi feito acima utilizando Caminho Relativo:

$ pwd
$ touch file.txt
$ ls -l file.pdf

Beleza, o resultado foi exatamente igual. Então onde está o problema afinal?

Imagine que houve necessidade de mudar de diretório logo após criarmos o arquivo e que neste novo diretório já exista um arquivo com o mesmo nome do que foi criado no diretório anterior. O comando de listar já não funcionaria como esperado, pois listaria o arquivo do diretório atual e não o que foi criado anteriormente.

Outro exemplo que posso citar de uma forma mais elaborada é a execução de um script, onde as variáveis de ambiente do usuário não teriam sido carregadas no momento da execução. Neste caso a execução dos comandos do script poderia não sair como esperada e por isso vale a pena dar atenção ao detalhe do caminho das pastas e arquivos (variáveis de ambiente também é um tema muito importante).

Como pudemos perceber, podem ocorrer sérios problemas quando precisamos apontar arquivos de configuração para uma aplicação, referenciar volumes para uma aplicação que vai ser "empacotada" num container, executar comandos como administrador, etc.

Por isso é muito importante especificar o alvo correto em um comando no terminal, em um script ou em um arquivo de configuração. Apontar o alvo correto também diminui riscos de segurança.

Por isso é recomendado sempre estar alerta.

Um abraço, bons estudos e até a próxima!

Compartilhe
Comentários (0)