Stavo seguendo un tutorial e ho inserito la seguente riga:
export PATH="~/.composer/vendor/bin/"
Ora nessun comando funziona affatto, nemmeno cose come ls
.
Che cosa fa il comando che copio e incolla e come lo risolvo?
Stavo seguendo un tutorial e ho inserito la seguente riga:
export PATH="~/.composer/vendor/bin/"
Ora nessun comando funziona affatto, nemmeno cose come ls
.
Che cosa fa il comando che copio e incolla e come lo risolvo?
$PATH
è la variabile che dice alla tua shell (bash di default) dove cercare i tuoi comandi. Contiene un elenco di directory, separate da due punti ( :
). Quando digiti ls
, la shell cercherà tutte le directory elencate in $PATH
( /bin
, /usr/bin
e così via) finché non trova un file chiamato ls
, e lo eseguirà.
Normalmente, si imposta una variabile semplicemente con
variable="foo bar baz"
... tuttavia, questo imposta solo quella variabile per la shell corrente - quelle modifiche non verranno trasferite alle sotto-shell, che possono essere importanti negli script (per esempio). Usando
export variable="foo bar baz"
... ti ti consentirà di usare la variabile in sotto-shell.
Quindi, quando si utilizza export PATH="~/.composer/vendor/bin/"
, si sovrascrive la variabile $PATH
, quindi quando si tenta di utilizzare ls
, la shell viene visualizzata in ~/.composer/vendor/bin/
, non trova alcun file denominato ls
e così fallisce. Quello che probabilmente vorrai fare è aggiungere ~/.composer/vendor/bin/
al tuo $PATH
, che puoi fare con:
export PATH="$PATH:~/.composer/vendor/bin/"
Puoi visualizzare il contenuto corrente di $PATH
con echo $PATH
.
Tutto ciò si applica solo alla shell corrente (e a tutte le sue subshell, dato che hai usato export
), quindi puoi risolvere il problema più semplicemente aprendo un nuovo terminale, come Mateusz Szlosek's answer note.
Se fai vuoi modificare il tuo $ PATH in modo permanente, puoi mettere quella riga alla fine del tuo ~/.bashrc
, che è originata ogni volta che apri una shell interattiva. Questa è una pratica standard se vuoi scrivere alcuni dei tuoi script (su Linux, usiamo ~/bin
per gli script utente, ma possono andare ovunque).
export
funziona solo nella sessione corrente. Puoi "aggiustarlo" aprendo la nuova finestra Terminale / scheda