Come possono le variabili usare “~” per il cd?


13

Come posso usare una variabile - $BASEnel mio cd. Ho provato quanto segue ma ho ricevuto un errore

$ cd ~/z/repo_1_ruby_193/
23:23:57 durrantm Castle2012 /home/durrantm/z/repo_1_ruby_193 

$ BASE="~/z"
23:24:03 durrantm Castle2012 /home/durrantm/z/repo_1_ruby_193 

$ cd $BASE/repo_1_ruby_193
-bash: cd: ~/z/repo_1_ruby_193: No such file or directory
23:24:25 durrantm Castle2012 /home/durrantm/z/repo_1_ruby_193 

Risposte:


25

In cd ~/z/stai usando l' espansione Tilde per espandere la ~tua home directory. In BASE="~/z", non lo sei perché hai citato il ~personaggio, quindi non è espanso. Ecco perché ricevi un messaggio che si lamenta di una ~directory inesistente . La soluzione è non citarla, cioè BASE=~/zper consentire l'espansione.


11

@ jw013 ha fornito una spiegazione e una soluzione valide.

Ma ci possono essere alcuni casi in cui si desidera citare i percorsi, ad esempio quando contengono più spazi o simboli speciali. In questo caso dovresti usare $HOMEinvece di ~, cioè BASE="~/z"diventerai BASE="$HOME/z"e funzionerai correttamente, perché la sostituzione dei parametri è interpretata tra virgolette, a differenza dell'espansione tilde.


5
Questo è un modo per farlo, ma non è necessario. BASE=~/"quoted name"funziona benissimo, purché non ~venga citato.
hvd,

4
@hvd: in realtà devi lasciare anche la barra non quotata. BASE=~/"quoted name"funziona, ma BASE=~"/quoted name"non lo fa.
Gordon Davisson,

Hai ragione. Buona pesca.
hvd,
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.