59 votes

Où se trouve .bash_profile ?

Je veux mettre de nouveaux alias à mes .bash_profile mais je ne trouve pas ce fichier.
Où est-il censé être ?

56voto

Lekensteyn Points 162346

C'est un fichier caché, situé dans votre dossier personnel :

~/.bash_profile

(le ~ se développe dans votre répertoire personnel. Si votre nom d'utilisateur est user le résultat serait : /home/user/.bash_profile ).

Comme c'est un fichier caché, vous devez le rendre visible. Pour le faire dans Nautilus, allez dans le menu "View" et cochez "Show hidden files" (ou appuyez sur le raccourci Ctrl + H ).

Si vous utilisez Kubuntu avec Dolphin, vous devez appuyer sur Ctrl + . pour basculer la visibilité des fichiers.

15voto

Steve Karg Points 11

~/.bash_profile n'est pas le bon endroit pour mettre les alias et les fonctions. Ils devraient aller dans ~/.bashrc . Voir http://mywiki.wooledge.org/DotFiles pour une explication.

9voto

Eliah Kagan Points 111731

Vous n'avez généralement pas .bash_profile sur Ubuntu, vous ne devriez pas non plus crée habituellement ce fichier. Comme jpezz dit il serait dans votre répertoire personnel sur votre système Ubuntu, qui est ce que ~ et vous pouvez le créer à cet endroit. Mais si vous le faites, vous devez être prudent, car cela empêchera bash d'exécuter automatiquement les commandes dans .profile -- ce que vous avez certainement do ont.

Lorsque bash s'exécute en tant que login Shell dans la WSL ou ailleurs 1 il exécute le premier de .bash_profile , .bash_login o .profile qui existe dans votre répertoire personnel. Si vous avez bash - les commandes spécifiques que vous voulez exécuter lorsque vous vous connectez, mais seulement lorsque bash est votre Shell--vous pourriez les mettre dans .bash_profile . Mais la simple existence de .bash_profile empêcherait .profile d'être utilisé.

Donc, vous voudriez fuente .profile からして .bash_profile en supposant que vous souhaitiez que ces commandes soient également exécutées, ce qui est presque toujours le cas. Vous pouvez le faire en plaçant cette commande dans .bash_profile :

. ~/.profile

(Certains lecteurs sont peut-être habitués à voir cela écrit comme . "$HOME/.profile" quand il apparaît dans un script de démarrage. C'est toujours bien - et vous pouvez préférer l'utiliser pour les commandes qui doivent fonctionner sur des interpréteurs de commandes autres que bash également, si vous avez besoin d'accommoder des shells extrêmement anciens qui ne supportent pas fonctions standard qui eh bien, vous n'avez pas besoin de ça. Dans tous les cas, bash soutient toujours expansion du tilde et le point de .bash_profile est que seul bash exécute des commandes à partir de celui-ci, donc . ~/.profile est bien).

Le site . builtin source un fichier, c'est-à-dire qu'il exécute toutes les commandes du fichier dans le Shell courant. Ouvrir un programme interactif bash Shell et exécuter help . pour plus d'informations.

La raison pour laquelle vous n'avez pas l'habitude .bash_profile sur Ubuntu même si vous avez bash -Les commandes spécifiques que vous souhaitez exécuter lors de la connexion. c'est que, par défaut, les utilisateurs .profile Les fichiers contiennent du code qui vérifie si le Shell actuel est bash permet d'exécuter de telles commandes.

Il existe une autre réponse à la question de savoir où se trouvent les fichiers tels que .profile o .bash_profile sont. Les versions par défaut de ces fichiers existent dans le répertoire /etc/skel répertoire. Les fichiers de ce répertoire sont copiés dans les répertoires personnels d'Ubuntu lorsque des comptes d'utilisateur sont créés sur un système Ubuntu - y compris le compte d'utilisateur que vous créez dans le cadre de l'installation d'Ubuntu. Si vous regardez dans ce répertoire, vous remarquerez qu'il y a un fichier appelé .profile --ainsi que d'autres fichiers comme .bashrc -- mais il n'y a pas de fichier appelé .bash_profile . C'est pourquoi ou, vraiment, comment --non .bash_profile existe dans votre répertoire personnel Ubuntu, à moins que vous ne l'ayez créé vous-même.


Enfin, vous devez no mettre les alias dans .profile du tout, ni .bash_profile un bon endroit pour eux, comme geirha rightly dit . En effet, vous souhaitez que vos alias fonctionnent dans les shells interactifs, qu'ils soient ou non des shells de connexion. Au lieu de cela, définissez vos alias dans .bashrc ou, mieux, .bash_aliases (comme L'invité Boeroe souligne ), que la valeur par défaut .bashrc sources. Voir Comment créer un alias Bash permanent ?

La valeur par défaut .profile vérifiera si vous exécutez un bash Shell et source .bashrc si vous l'êtes :

# if running bash
if [ -n "$BASH_VERSION" ]; then
    # include .bashrc if it exists
    if [ -f "$HOME/.bashrc" ]; then
    . "$HOME/.bashrc"
    fi
fi

Entre-temps, l'option par défaut .bashrc quittera en haut de l'écran sans rien faire s'il est exécuté dans un Shell non interactif, de sorte que les commandes qu'il contient ne s'exécuteront pas s'il est sourcé par .profile dans un non interactif login Shell et dans d'autres scénarios plus obscurs 2 :

# If not running interactively, don't do anything
case $- in
    *i*) ;;
      *) return;;
esac

Donc si vous mettre les alias dans .bashrc ou dans .bash_aliases vous les obtiendrez pour les shells de connexion interactifs (où .profile est utilisé) ainsi que les shells interactifs sans login (où l'option .bashrc est utilisé). C'est ce que vous voulez. Ne mettez rien au-dessus du contrôle de l'interactivité, sauf si vous le souhaitez vraiment, vraiment savoir ce que vous faites.


1 Cette réponse a été écrite à l'origine pour une question relative à la WSL mais cette question a été fermée en tant que doublon et cette réponse s'applique pleinement ici aussi, donc j'ai développé un peu et l'ai posté ici à la place.

2 Lorsque bash détecte qu'il s'exécute probablement en tant que Shell initial d'une connexion à distance qui est no un login Shell--comme quand vous utilisez ssh pour exécuter une seule commande sur une machine distante - il exécute les commandes à partir de .bashrc . (Voir 6.2 Fichiers de démarrage de Bash en el Manuel de GNU Bash .)

5voto

guest boeroe Points 59

Il est pratique de mettre tous vos alias dans ~/.bash_aliases dans le répertoire personnel de l'utilisateur. C'est ce qui est suggéré dans le ~/.bashrc dans les commentaires.

0voto

TheoJones Points 269

Je voulais juste ajouter que même si les fichiers sont cachés dans la visionneuse, vous pouvez toujours les ouvrir tous si vous entrez simplement le nom du fichier. Par exemple, si vous écrivez dans la barre d'adresse de dolphin /home/<user>/.bashrc, il ouvrira le fichier avec l'éditeur par défaut sans avoir à afficher/cacher certains fichiers.

L'autre moyen est d'ouvrir votre éditeur préféré et de taper le nom du fichier.

Je considère que c'est la meilleure façon de gérer les fichiers cachés, car le fait de montrer et de ne pas montrer ne fait qu'ajouter du bruit qui peut être évité.

Et les alias doivent être placés dans le fichier .bashrc sous la forme suivante geirha écrit.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X