Où est le fichier .bash_profile? [dupliquer]

41

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

    
posée Shira 06.03.2011 - 12:40
la source

5 réponses

37

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

~/.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 il s’agit d’un fichier caché, vous devez le rendre visible. Pour le faire dans Nautilus, allez dans le menu "Affichage" et cochez "Afficher les fichiers cachés" (ou appuyez sur le raccourci Ctrl + H ).

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

    
réponse donnée Lekensteyn 06.03.2011 - 12:45
la source
12

~/.bash_profile n'est pas le bon endroit pour placer des alias et des fonctions. Ils devraient aller en ~/.bashrc . Voir lien pour une explication.

    
réponse donnée geirha 06.03.2011 - 19:39
la source
6

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 fichier ~/.bashrc dans les commentaires.

    
réponse donnée guest boeroe 29.12.2013 - 01:57
la source
1

Vous n'avez généralement pas .bash_profile sur Ubuntu, ni devriez-vous généralement créer ce fichier. Comme jpezz dit , ce serait dans votre répertoire personnel sur votre système Ubuntu, ce qui correspond à ~ car, et vous pouvez le créer ici. Mais si vous le faites, vous devriez faire attention, car cela empêchera bash d'exécuter automatiquement les commandes dans .profile - ce que vous avez certainement fait .

Lorsque bash s'exécute en tant que shell de connexion , dans WSL ou autrement 1 , il exécute le premier .bash_profile , .bash_login ou .profile qui existe dans votre répertoire personnel. Si vous avez des commandes spécifiques à bash que vous souhaitez exécuter lorsque vous vous connectez, mais uniquement lorsque bash est votre shell, vous pouvez les placer dans .bash_profile . Mais la simple existence de .bash_profile empêcherait .profile d'être utilisé.

Alors, vous voudrez source .profile de .bash_profile , en supposant que vous vouliez que ces commandes soient aussi exécutées, ce que vous feriez presque toujours. Vous pouvez le faire en mettant cette commande dans .bash_profile :

. ~/.profile

(Certains lecteurs peuvent être habitués à voir cela écrit en tant que . "$HOME/.profile" quand il apparaît dans un script de démarrage. C'est toujours bien - et vous préférerez peut-être l'utiliser pour des commandes qui doivent travailler sur des coques autres que bash aussi, si vous avez besoin de prendre en charge d'anciens shells qui ne prennent pas en charge les fonctionnalités standard , qui - eh bien, vous n'en avez pas besoin.En tout cas, bash supporte toujours l'extension tilde et le point de .bash_profile est que seul bash exécute les commandes de celui-ci, donc . ~/.profile est correct.

La fonction intégrée . source un fichier, c'est-à-dire qu'il exécute toutes les commandes du fichier dans le shell actuel. Ouvrez un shell interactif bash et exécutez help . pour plus d'informations.

La raison pour laquelle vous n'avez généralement pas .bash_profile sur Ubuntu même si vous avez des commandes spécifiques à bash que vous souhaitez exécuter lors de la connexion est que, par défaut, les utilisateurs% co_de Les fichiers% contiennent du code qui vérifie si le shell actuel est .profile , puis provoque l'exécution de ces commandes.

Il existe une autre réponse à la question de savoir où sont les fichiers tels que bash ou .profile . Les versions par défaut de ces fichiers existent dans le répertoire .bash_profile . Les fichiers de ce répertoire sont copiés dans les répertoires de base 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 lors de l'installation d'Ubuntu. Si vous regardez dans ce répertoire, vous remarquerez qu'il existe un fichier appelé /etc/skel - ainsi que d'autres fichiers tels que .profile - mais aucun fichier appelé .bashrc . C'est pourquoi - ou, en réalité, comment - aucun .bash_profile n’existe dans votre répertoire personnel Ubuntu à moins que vous ne l’ayez créé vous-même.

Enfin, vous devriez ne pas placer des alias dans .bash_profile du tout, et .profile n'est pas un bon endroit pour eux, en tant que geirha dit à juste titre . En effet, vous souhaitez que vos alias fonctionnent dans des shells interactifs, qu’ils soient ou non des shells de connexion. Au lieu de cela, définissez vos alias dans .bash_profile ou, mieux, .bashrc (comme le souligne les commentaires des invités ). par défaut .bash_aliases sources. Voir Comment créer un alias Bash permanent?

Le fichier .bashrc par défaut vérifiera si vous exécutez un shell .profile et le source .bash si vous êtes:

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

Pendant ce temps, .bashrc par défaut va quitter en haut sans rien faire s'il est exécuté dans un shell non interactif, donc les commandes qu'il contient ne s'exécuteront pas s'il est généré par .bashrc dans un non shell de connexion interactif 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 mettez des alias dans .profile ou dans .bashrc , vous les obtiendrez pour les shells de connexion interactifs (où .bash_aliases est utilisé) ainsi que pour les shells interactifs non connectés. (où .profile est utilisé). Voici ce que tu veux. Ne mettez rien au-dessus de la vérification de l'interactivité, à moins que vous ne sachiez vraiment ce que vous faites.

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

2 Lorsque .bashrc détecte qu’il est probablement exécuté en tant que shell initial d’une connexion distante non à un shell de connexion -si vous utilisez bash pour exécuter une seule commande sur un machine distante - il exécute les commandes de ssh . (Voir 6.2 fichiers de démarrage Bash dans le https Manuel GNU Bash .)

    
réponse donnée Eliah Kagan 27.10.2017 - 17:16
la source
0

je voulais juste que vous sonniez dedans - que même les fichiers sont cachés dans le visualiseur, vous pouvez toujours tous les ouvrir si vous entrez simplement le nom du fichier. Par exemple, si vous écrivez dans la barre d'adresse de dauphin /home/<user>/.bashrc, le fichier s'ouvrira avec l'éditeur par défaut sans basculer afficher / masquer certains fichiers.

L'autre moyen consiste à ouvrir votre éditeur favori et à saisir le nom du fichier.

Je considère que la manière la plus préférée de gérer les fichiers cachés est d’afficher le fait de ne pas afficher uniquement le bruit qui peut être évité.

Et les alias doivent aller dans .bashrc comme geirha a écrit.

    
réponse donnée Osis 08.03.2011 - 11:24
la source

Lire d'autres questions sur les étiquettes