J'ai changé ma variable «HOME» et je ne trouve plus «~ / .bash_profile» pour la changer à nouveau

15

Je déconnais avec les variables d'environnement sur mon Mac, j'essayais d'apprendre à les utiliser et j'ai utilisé la commande nano ~/.bash_profileoù j'ai ensuite ajouté la ligne HOME=/Users/MyCompName/Desktoppour mettre à jour ma variable d'accueil.

Ce changement a fonctionné et peut être vu lorsque j'utilise printenvpour afficher toutes les variables d'environnement, mais quand je suis allé pour HOMErevenir en arrière, je n'arrivais plus à trouver ~/.bash_profile. Où est-il allé?

Mat
la source
9
Fondamentalement, cela ~signifie$HOME
el.pescado
6
... donc si vous redéfinissez $HOME, vous serez redéfini ~aussi
el.pescado

Réponses:

32

C'est au même endroit.

Avant que le changement ne ~se transforme en quelque chose comme /Users/YourUserName, le shell trouve votre .bash_profilelà - bas. Une fois le fichier obtenu, il se ~développe vers un autre chemin, il ~/.bash_profilene pointe donc plus vers le fichier correspondant. C'est parce que dans ce contexte ~signifie $HOME.

Si vous connaissez le chemin d'accès complet à votre répertoire personnel, vous pouvez l'utiliser à la place de ~. Sous Mac, cela ressemblerait probablement à ceci:

nano /Users/YourUserName/.bash_profile

Ou laissez votre Bash rechercher votre répertoire personnel dans la base de données des utilisateurs plutôt que de simplement le regarder $HOME. Cela ne vous oblige à vous souvenir de rien:

nano ~YourUserName/.bash_profile

Modifier votre HOMEvariable sans changer votre répertoire personnel n'est pas la meilleure idée. La modification du répertoire personnel d'un utilisateur est une tâche administrative, généralement les utilisateurs ordinaires ne peuvent pas le faire.

Kamil Maciorowski
la source
Génial j'ai pu le retrouver merci! Pourriez-vous élaborer sur ce que vous entendez par «après que le fichier a été obtenu»? Je ne connais pas ce que cela signifie pour un fichier d'être sourcé
Matt
6
@Matt .bash_profilea une forme de script Bash. Vous pouvez exécuter un script ou le source. Exécuter signifie créer un sous-shell et y exécuter le script ligne par ligne. Sourcing signifie exécuter le script dans le shell actuel . Certaines tâches destinées à affecter le shell actuel ne peuvent pas être exécutées dans un sous-shell; changer une variable pour le shell courant en fait partie. C'est pourquoi certains fichiers proviennent, et ne sont pas exécutés dans un sous-shell. Pour générer manuellement un fichier, utilisez . file( .est spécifié par POSIX) ou source file( sourceest une extension non-POSIX comprise par quelques shells).
Kamil Maciorowski
2
Si vous (Matt) ne savez pas où se trouvait votre répertoire personnel, vous pouvez utiliser à la nano ~YourUserName/.bash_profileplace. Cela recherchera votre répertoire personnel dans la base de données des utilisateurs plutôt que de simplement regarder $ HOME.
Stig Hemmer
1
@StigHemmer La réponse est maintenant un wiki communautaire. Votre commentaire utile a été assimilé. Je vous remercie.
Kamil Maciorowski