pwd senza link simbolici


54

Se lo faccio pwdnoto che utilizza tutti i collegamenti simbolici che ho usato per accedere alla directory corrente. Posso ottenerlo per dirmi la directory "reale" in cui mi trovo ... vale a dire il percorso dalla radice alla mia directory corrente senza l'uso di alcun collegamento simbolico?

Risposte:


70

Secondo la manpage POSIX per pwd, l' -Popzione può essere utile:

-P Il percorso assoluto scritto non deve contenere nomi di file che, nel contesto del percorso, si riferiscono a file di tipo link simbolico.

così

$ pwd -P

dovrebbe essere quello di cui hai bisogno.


Vorrei sottolineare che queste informazioni sono facilmente reperibili digitando man pwdshell per scoprire le opzioni per questo comando.
Chud37

7

La shell pwd integrata utilizza il percorso di cui la shell tiene traccia quando cd(e la memorizza $PWD). Questo significa che se hai un link simbolico a un percorso complesso (profondo), ti dirà cosa hai digitato per cambiare in quella directory invece del percorso reale. Questo viene fatto per darti quello che vuoi la maggior parte del tempo.

/bin/pwdusa la getcwdchiamata di sistema (che in questi giorni è una chiamata in libreria, in lettura /proc/self/cwd) che restituisce il percorso canonico per la directory corrente, senza tutti gli attraversamenti del collegamento simbolico.

Come ha sottolineato Steven D, pwdha la -Ppossibilità di ignorare $PWD. Ha anche la -Lpossibilità di restituire il contenuto di $PWD. La pagina man per pwdnon dice quale opzione è usata di default ma l'esperienza mi dice che la descrizione sopra è corretta (shell pwdvs. /bin/pwd). Tuttavia, probabilmente non dovresti fare affidamento su questo e limitarti a usarlo pwd -P.


2
Il comportamento che descrivi è quello sui sistemi Linux in cui /bin/pwdè GNU pwdquando POSIXLY_CORRECT non è impostato. Sui sistemi POSIX in cui pwdè presente /bin. /bin/pwdutilizzerà $ PWD e potrebbe restituire percorsi con collegamenti simbolici. GNU pwd si comporterà in quel modo POSIX quando troverà una variabile POSIXLY_CORRECT nel suo ambiente.
Stéphane Chazelas,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.