Je ne trouve pas .bash_profile dans Ubuntu


67

Je ne trouve pas .bash_profiledans Ubuntu 14.04 dans mon /home/userrépertoire. J'ai utilisé la ls -acommande pour voir le .bash_profile, mais il n'y a pas un tel fichier.


1
Vous devriez utiliser à la ~/.profileplace.
muru

2
double possible de .bash_profile
Alaa Ali

1
Il est assez courant que des fichiers de configuration (ou même des répertoires) manquent. Dans ce cas, le logiciel qui doit les lire utilise une configuration par défaut et / ou lit d'autres sources pour récupérer la configuration. Si vous souhaitez modifier un fichier de configuration inexistant, créez-le d'abord.
Bakuriu

Réponses:


84

Ubuntu utilise ~/.profile.

vous pouvez créer votre .bash_profiledans Ubuntu mais vous .profilene pourrez pas le lire.

Si nous lisons le contenu .profile:

cat ~/.profile

sortie

# ~/.profile: executed by the command interpreter for login shells.
# This file is not read by bash(1), if ~/.bash_profile or ~/.bash_login
# exists.

Alors utilisez ~/.profileau lieu de~/.bash_profile


.profile n'a pas fonctionné pour moi. Je devais modifier .bashrc vim ~/.bashrcpuis. ~/.bashrc
Nahid

L'utilisation de .bash_profile ne fonctionne pas sur Ubuntu. Il utilise Dash comme un shell de connexion graphique, pas Bash, donc bash_profile n'est pas lu.
Jonathan Hartley

Si vous modifiez votre fichier .profile, vous devez vous déconnecter puis vous reconnecter pour voir les modifications.
Jonathan Hartley

8

Lors de l'appel d'un shell de connexion, bash recherchera ses fichiers de configuration dans cet ordre:

[0] ~/.bash_profile
[1] ~/.bash_login
[2] ~/.profile

Après avoir trouvé le premier, il cesse de chercher les autres , donc s'il y a un .bash_profiledans mon $HOMEbash ne cherchera pas .bash_loginet .profileplus.

À partir de ces trois noms de fichier, Ubuntu utilise par défaut, .profilevous pouvez le renommer .bash_profilesi vous le souhaitez:

mv ~/.profile ~/.bash_profile

Maintenant , si nous ouvrons un nouveau shell bash en utilisant bash -l, su - $USER, sudo -u $USER -iou toute autre commande qui fonctionne bash comme shell de connexion, ~/.bash_profileva se source.

Important à noter:

Ce dont j'ai parlé jusqu'à présent ne concerne que Bash lui-même. Lorsque vous vous connectez au système à partir d'une interface graphique, le gestionnaire d'affichage est responsable de la recherche des fichiers appropriés.

Ubuntu utilise gdm3comme gestionnaire d’affichage, si nous examinons: /etc/gdm3/Xsessionnous pouvons voir qu’aucun des fichiers ne sera acheté sauf .profile:

# First read /etc/profile and .profile
for file in /etc/profile "$HOME/.profile"; do
  if [ -f "$file" ]; then
    source_with_error_check "$file"
  fi
done

Par conséquent, si vous utilisez une interface graphique pour vous connecter, conservez le fichier sous le .profilenom, sinon vous risqueriez de perdre certaines variables et certains paramètres dans vos environnements.

Je suppose que la meilleure option est de créer un lien symbolique vers .profile:

ln -s ~/.profile ~/.bash_profile

Désormais, vos données sont stockées .profile, gdmil ne manque rien, des chargements bash .bash_profilesont en réalité .profile, et en modifiant chacun d’eux, vous obtenez le même résultat.

Manquant .profile?

Si vous n'en avez pas, .profilerécupérez-en une copie d'ici:

cp /etc/skel/.profile ~/.profile

ou

# Remember the note above
cp /etc/skel/.profile ~/.bash_profile

Mais si Bash recherche d’abord le fichier ~ / .bash_profile, comment se fait-il que ce ne soit pas le cas sous Ubuntu? Ubuntu a-t-il modifié Bash? Cela semble étrange. man bashsur Ubuntu décrit toujours comment il va chercher .bash_profile en premier.
Jonathan Hartley

Il cherche d' .bash_profile abord il ne peut pas le trouver (car il n'existe pas) puis cherche .bash_loginne peut pas le trouver à nouveau (car Ubuntu n'utilise pas ces deux noms) il le cherche finalement .profileet oui il est. Donc, si vous créez un .bash_profilein, ~vous écrasez celui d'Ubuntu ~/.profile, c'est le comportement par défaut de bash. Rien n'a été modifié ici.
Ravexina

Bon, c'est ce que je pensais au début aussi! Et ce que vous décrivez se produit sur RHEL. Mais sur Ubuntu, ce n'est pas le cas. Si je crée un .bash_profile, ce n'est pas lu. Je viens de me rendre compte que c'est parce qu'Ubuntu n'utilise plus 'Bash' en tant que shell de connexion graphique. Il utilise 'Dash' à la place. Je pense que cela est vrai depuis environ 18.04.
Jonathan Hartley

Vous manquez le point ici. En fait, nous parlons de la bash elle-même. Ce que je dis ici, c’est qu’Ubuntu crée «.profile» et non les autres. Par conséquent, si nous ouvrons un nouveau shell bash (login shell), c’est dans cet ordre que les fichiers sont lus, Peu importe la distribution que nous utilisons. :)
Ravexina

Si les lecteurs renomment .profile en .bash_profile comme votre réponse le suggère, le fichier ne sera pas lu pour les utilisateurs d’Ubuntu, ni lors de la connexion, ni lors de l’ouverture d’un terminal. Vous avez brisé leur système. Le fichier ne sera lu que s’ils lancent des sessions bash avec l’argument '--login' pour en faire explicitement un shell de connexion. Cela n'arrivera jamais automatiquement sur leur bureau.
Jonathan Hartley

5

Cela signifie que le fichier n'existe pas. Mais, vous pouvez créer le fichier et bashexécuter / sources le fichier s'il bashest appelé en tant que shell de connexion. Donc, tout le temps vous vous connectez via un shell (par exemple via ssh).

Si vous souhaitez que le contenu soit exécuté à chaque fois que vous ouvrez un terminal, vous devez .bashrcplutôt modifier le fichier.


pouvez-vous avoir une idée de la raison pour laquelle le fichier .bash_profile est manquant?
Roledenez

Vous pouvez le copier depuis le /etc/skel/répertoire.
Frantique

C'est une conception de canonique. Mais cela ne signifie pas que vous ne pouvez pas le faire.
chaos

J'ai expliqué que la raison .bash_profileest manquante (et ne fonctionne pas) sur Ubuntu dans des commentaires sur d'autres réponses.
Jonathan Hartley

2

Top réponse à utiliser ~/.profileau lieu de ~/.bash_profilen'a pas fonctionné pour moi.

Modification a .bashrctravaillé

Juste:

vim ~/.bashrc

Note: J'utilise Ubuntu WSL.


Dans Linux authentique, le fichier .profile est appliqué lorsque vous vous connectez à l'interface graphique ou à distance, ou que vous vous connectez à la console, c'est-à-dire après avoir appuyé sur les touches ctrl + Maj + F2. Il est censé représenter l'heure à laquelle vous vous connectez à la machine pour la première fois, en créant un shell parent de tous les autres processus que vous avez créés par la suite. Je soupçonne que sur WSL, il n’existe aucune chose de telle sorte que votre .profile puisse ne jamais être lu.
Jonathan Hartley

pareil pour moi. ~/.profilejuste pas chargé par défaut dans Ubuntu 18.04
javapowered

0

Si vous voulez parler du .bashrc, vous le trouverez dans votre dossier personnel. S'il ne s'y trouve pas, vous pouvez le copier du dossier / etc / skel dans votre dossier personnel.

Si vous avez besoin de plus d’informations à ce sujet, veuillez visiter la page stefaan lippens.

http://stefaanlippens.net/bashrc_and_others

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.