Ho cambiato la mia variabile "HOME" e ora non riesco a trovare "~ / .bash_profile" per cambiarla


15

Stavo scherzando con le variabili di ambiente sul mio Mac, cercando di imparare come usarle e ho usato il comando in nano ~/.bash_profilecui ho quindi aggiunto la linea HOME=/Users/MyCompName/Desktopper aggiornare la mia variabile di casa.

Questa modifica ha funzionato e può essere vista quando uso printenvper visualizzare tutte le variabili di ambiente, ma quando sono tornato HOMEindietro non sono riuscito a trovare ~/.bash_profilepiù. Dov'è andato?


9
Fondamentalmente ~significa$HOME
el.pescado

6
... quindi se ridefinisci $HOME, anche tu ~viene ridefinito
el.pescado

Risposte:


32

È nello stesso posto.

Prima che il cambiamento si ~espanda a qualcosa di simile /Users/YourUserName, la shell ti trova .bash_profilelì. Una volta ottenuto il file, il file si ~espande in un altro percorso, quindi ~/.bash_profilenon punta più al file pertinente. Questo perché in questo contesto ~significa $HOME.

Se conosci il percorso completo della tua home directory attuale, puoi usarlo invece di ~. In Mac probabilmente sarebbe simile a questo:

nano /Users/YourUserName/.bash_profile

Oppure lascia che Bash cerchi la tua home directory nel database degli utenti piuttosto che guardarli $HOME. Questo non richiede di ricordare nulla:

nano ~YourUserName/.bash_profile

Modificare la HOMEvariabile senza cambiare la home directory effettiva non è la migliore idea. La modifica della home directory di qualsiasi utente è un'attività amministrativa, di solito gli utenti normali non possono farlo.


Fantastico sono stato in grado di ritrovarlo grazie! Ti dispiacerebbe approfondire cosa intendi per "dopo che il file è stato ottenuto"? Non ho familiarità con il significato del reperimento di un file
Matt

6
@Matt .bash_profileha una forma di uno script Bash. È possibile eseguire uno script o sorgente. Eseguire significa creare una subshell ed eseguire lo script riga per riga lì. Sourcing significa eseguire lo script nella shell corrente . Alcune attività che intendono influenzare la shell corrente non possono essere eseguite in una subshell; la modifica di una variabile per la shell corrente è una di queste. Ecco perché alcuni file provengono, non vengono eseguiti in una subshell. Per eseguire manualmente l'origine di un file, utilizzare . file( .è specificato da POSIX) o source file( sourceè un'estensione non POSIX compresa da poche shell).
Kamil Maciorowski l'


2
Se (Matt) non sai dove si trovava la tua home directory, puoi nano ~YourUserName/.bash_profileinvece usare . Questo cercherà la tua directory home nel database degli utenti piuttosto che guardare $ HOME.
Stig Hemmer,

1
@StigHemmer La risposta è ora wiki della community. Il tuo utile commento è stato assimilato. Grazie.
Kamil Maciorowski l'
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.