# Percorso

Un percorso (in lingua inglese "path" o "pathname"), in informatica, indica la posizione specifica di un elemento (file o cartella) all'interno di un archivio dati, con un certo file system strutturato ad albero.
Il percorso consiste dunque in una stringa di caratteri che elenca, ordinatamente, i diversi nodi del file system da visitare per raggiungere l'elemento in questione.

## Tipologia
### Percorso assoluto

Un percorso assoluto è definito tale quando specifichi la posizione di un elemento a partire dalla radice del file system. Esso non è dipendente dalla cartella di lavoro corrente (current working directory).

### Percorso relativo

Un percorso relativo, rispetto alla directory di lavoro corrente, è tale se descriva invece la posizione di un elemento a partire da un'altra posizione dell'albero del file system (quella in cui si trova il programma o il documento che utilizza tale percorso relativo per individuare l'elemento in questione). In pratica nella stringa che costituisce il percorso, si sottintende la parte che va dalla radice del file system fino alla directory corrente. Ciò consente di abbreviare la lunghezza della stringa ed ha il vantaggio che il percorso relativo rimane inalterato anche se la posizione dell'elemento finale viene spostata nell'albero del filesystem, purché parallelamente la directory di lavoro subisca lo stesso spostamento.
Per esempio, lo stesso file identificato dal percorso assoluto C:\Documenti\miodocumento.doc potrebbe essere identificato, a partire dalla posizione C:\ (cioè all'interno di un programma o di un documento che risiede in C:\), con il percorso relativo Documenti\miodocumento.doc.
Il percorso relativo impiega sintassi speciali per riferirsi a cartelle "speciali":
* Due punti successivi .. si riferiscono alla cartella padre (parent directory) di una data cartella.
* Il punto singolo . indica la cartella stessa.
Per esempio, il percorso relativo del file C:\Documenti\miodocumento.doc partendo dalla cartella C:\Documenti\Immagini risulta essere ..\miodocumento.doc.
In questo caso, se la cartella Documenti venisse spostata con tutto il suo contenuto da C:\ sotto una cartella C:\Utente\, il percorso assoluto di miodocumento.doc diventerebbe C:\Utente\Documenti\miodocumento.doc mentre il percorso relativo dalla (nuova) posizione della cartella Immagini (C:\Utente\Documenti\Immagini) risulta essere ancora quello di prima: ..\miodocumento.doc.
Il modo per individuare la cartella radice cambia leggermente a seconda del sistema operativo: si vedano le seguenti sezioni per maggiori approfondimenti.

## Regole di costruzione nei sistemi operativi

Due sono le principali differenze tra i sistemi operativi, nel determinare i percorsi nel file system:
* il carattere separatore, impiegato per distinguere gli elementi all'interno del percorso;
* il numero di cartelle radice.
Queste informazioni sono riassunte nella seguente tabella.
| | Unix/Linux | DOS e discendenti, come OS/2 e Windows | Versione giapponese di Windows | Classic Mac OS | AmigaOS | RISC OS | Versione coreana di Windows |
| Radice | / (unica, a prescindere dal numero di dischi) | <lettera disco>:\ | <lettera disco>:¥ | <nome disco>: | <disco o volume>: | <tipo FS>::<nome disco>.$ | <lettera disco>:₩ |
| (ogni disco ha la propria radice) ||||||
| Separatore | / | \ | ¥ | : | / | . | ₩ |

### Percorsi Windows\DOS

Nei sistemi Windows ogni disco ha il proprio albero del file system, identificato da una lettera dell'alfabeto. Il carattere separatore è \ (barra rovesciata).
Le cartelle radice sono, allora, individuate con C:\, D:\ , ...
Il percorso C:\Documenti\miodocumento.doc è, pertanto, assoluto ed identifica il file miodocumento.doc, contenuto all'interno della directory Documenti, posizionata nel disco C:\ del computer.
Il percorso Immagini\miafoto.jpg è, invece, un percorso relativo, poiché non inizia con la cartella radice.
In Windows è anche possibile impiegare una sintassi "ibrida". Il percorso \Documenti\miodocumento.doc rappresenta un percorso assoluto, relativamente al disco corrente.

### Percorsi Unix/Linux

Nei sistemi Unix la radice del file system è unica, anche in caso di dischi multipli. Il carattere separatore è / (slash).
Il percorso /home/Desktop/Documenti/miodocumento.doc è, pertanto, assoluto ed identifica il file miodocumento.doc, contenuto nella cartella Documenti, a sua volta contenuta in Desktop, a sua volta contenuta nella sottocartella home della radice.

## Esempi

| Percorso assoluto | Directory corrente | Percorso relativo |
| C:\Documenti\miodocumento.doc | C:\Documenti | miodocumento.doc o .\miodocumento.doc |
| C:\Documenti\miodocumento.doc | C:\ | Documenti\miodocumento.doc o .\Documenti\miodocumento.doc |
| C:\Documenti\miodocumento.doc | C:\Documenti\Immagini | ..\miodocumento.doc |
| C:\Documenti\miodocumento.doc | C:\Documenti\Immagini\vacanze | ..\..\miodocumento.doc |
| C:\Documenti\miodocumento.doc | C:\Windows | ..\Documenti\miodocumento.doc |
| C:\Documenti\miodocumento.doc | D:\backup | C:\Documenti\miodocumento.doc (Trattasi di percorso assoluto, in quanto il percorso relativo è definito unicamente all'interno dello stesso albero di file system) |
| C:\Documenti | C:\Documenti | . |
| C:\Documenti | C:\ | Documenti o .\Documenti |
| C:\Documenti | C:\Documenti\Immagini | .. |
| C:\Documenti | C:\Documenti\Immagini\vacanze | ..\.. |
| C:\Documenti | C:\Windows | ..\Documenti |
| C:\Documenti | D:\backup | C:\Documenti (Trattasi di percorso assoluto, in quanto il percorso relativo è definito unicamente all'interno dello stesso albero di file system) |
| /home/ciccioformaggio/Documents/document.odt | /home/ciccioformaggio/Documents | document.odt o .\document.odt |
| /home/ciccioformaggio/Documents/document.odt | / | home/ciccioformaggio/Documents/document.odt |
| /home/ciccioformaggio/Documents/document.odt | /home/ciccioformaggio/Images | ../document.odt |
| /home/ciccioformaggio/Documents/document.odt | /home/ciccioformaggio/Images/holydays | ../../document.odt |
| /home/ciccioformaggio/Documents/document.odt | /usr | ../home/ciccioformaggio/Documents/document.odt |
| /home/ciccioformaggio/Documents | /home/ciccioformaggio/Documents | . |
| /home/ciccioformaggio/Documents | / | home/ciccioformaggio/Documents |
| /home/ciccioformaggio/Documents | /home/ciccioformaggio/Images | .. |
| /home/ciccioformaggio/Documents | /home/ciccioformaggio/Images/holydays | ../.. |
| /home/ciccioformaggio/Documents | /usr | ../home/ciccioformaggio/Documents |