Ich kann .bash_profile in Ubuntu nicht finden


67

Ich kann .bash_profileUbuntu 14.04 nicht in meinem /home/userVerzeichnis finden. Ich habe den ls -aBefehl verwendet, um das zu sehen .bash_profile, aber es gibt keine solche Datei.


1
Sie sollten ~/.profilestattdessen verwenden.
muru

2
Mögliches Duplikat von Ich kann .bash_profile nicht finden
Alaa Ali

1
Es ist ziemlich häufig, dass einige Konfigurationsdateien (oder sogar Verzeichnisse) fehlen. In diesem Fall verwendet die Software, die sie lesen soll, eine Standardkonfiguration und / oder liest andere Quellen, um die Konfiguration abzurufen. Wenn Sie eine Konfigurationsdatei ändern möchten, die nicht vorhanden ist, erstellen Sie sie einfach zuerst.
Bakuriu

Antworten:


84

Ubuntu verwendet ~/.profile.

du kannst dein .bash_profilein Ubuntu erstellen aber dann .profilewird es nicht gelesen.

Wenn wir den .profile-Inhalt lesen:

cat ~/.profile

Ausgabe

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

Also ~/.profilestatt verwenden~/.bash_profile


.profile hat bei mir nicht funktioniert. Ich hatte Bashrc bearbeiten vim ~/.bashrcdann. ~/.bashrc
Nahid

Die Verwendung von .bash_profile funktioniert unter Ubuntu nicht. Es verwendet Dash als GUI-Anmeldeshell und nicht Bash, sodass bash_profile nicht gelesen wird.
Jonathan Hartley

Wenn Sie Ihr .profile bearbeiten, müssen Sie sich abmelden und erneut anmelden, um die Änderungen zu sehen.
Jonathan Hartley

8

Beim Aufrufen einer Login-Shell sucht bash nach den Konfigurationsdateien in der folgenden Reihenfolge:

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

Nach dem ersten zu finden, hört es sucht die andere so , wenn es eine ist .bash_profilein meiner $HOMEbash wird nicht aussehen .bash_loginund .profilemehr.

Aus diesen drei Dateinamen, die Ubuntu standardmäßig verwendet .profile, können Sie ihn umbenennen, .bash_profilewenn Sie möchten:

mv ~/.profile ~/.bash_profile

Nun , wenn wir eine neue Bash - Shell öffnen bash -l, su - $USER, sudo -u $USER -ioder andere Befehle , die bash als Login - Shell ausgeführt wird , ~/.bash_profilewird erhalten bezogen.

Wichtig zu beachten:

Was ich bisher angesprochen habe, gilt nur für Bash selbst. Wenn Sie sich über eine grafische Benutzeroberfläche am System anmelden, ist der Display-Manager für die Beschaffung der richtigen Dateien verantwortlich.

Ubuntu verwendet gdm3als Anzeigemanager, wenn wir uns Folgendes ansehen: /etc/gdm3/XsessionWir können sehen, dass keine der Dateien bezogen wird, außer .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

Wenn Sie sich also über eine grafische Benutzeroberfläche anmelden, behalten Sie den .profileNamen der Datei bei, da Sie sonst möglicherweise einige Variablen und Einstellungen in Ihren Umgebungen übersehen.

Ich denke, die bessere Option ist das Erstellen eines Symlinks zu .profile:

ln -s ~/.profile ~/.bash_profile

Jetzt bleiben Ihre Daten erhalten .profile, gdmverpassen nichts, .bash_profilewas tatsächlich passiert .profile, und wenn Sie sie bearbeiten, erhalten Sie dasselbe Ergebnis.

Fehlendes .profil?

Wenn Sie keine haben, .profileholen Sie sich hier eine Kopie davon:

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

oder

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

Aber wenn Bash zuerst nach ~ / .bash_profile sucht, wie kommt es dann, dass dies in Ubuntu nicht funktioniert? Hat Ubuntu Bash modifiziert? Das scheint seltsam. man bashUnter Ubuntu wird noch beschrieben, wie es zuerst nach .bash_profile aussehen wird.
Jonathan Hartley

Es sucht .bash_profile zuerst, es kann es nicht finden (weil es nicht existiert), dann sucht, .bash_loginkann es nicht wieder finden (weil Ubuntu diese beiden Namen nicht verwendet), schließlich sucht es .profileund ja, da ist es. Wenn Sie also ein .bash_profileIn erstellen und ~Ubuntus überschreiben ~/.profile, ist dies das Standardverhalten von bash. Hier wurde nichts geändert.
Ravexina

Richtig, das habe ich mir auch zuerst gedacht! Und was Sie beschreiben, passiert auf RHEL. Auf Ubuntu ist dies jedoch nicht der Fall. Wenn ich einen erstelle .bash_profile, wird dieser nicht gelesen. Mir ist gerade aufgefallen, dass Ubuntu 'Bash' nicht mehr als GUI-Anmeldeshell verwendet. Stattdessen wird "Dash" verwendet. Ich denke, dass dies seit ungefähr 18.04 wahr ist.
Jonathan Hartley

Sie verpassen den Punkt hier. Eigentlich geht es um die Bash selbst. Ich sage hier, dass Ubuntu ".profile" erstellt und nicht die anderen. Wenn wir also eine neue Bash-Shell (Login-Shell) öffnen, wird diese in der angegebenen Reihenfolge gelesen. Es spielt keine Rolle, welche Distribution wir verwenden. :)
Ravexina

Wenn Leser .profile in .bash_profile umbenennen, wie es Ihre Antwort nahelegt, wird diese Datei für Ubuntu-Benutzer weder beim Anmelden noch beim Öffnen eines Terminals gelesen. Sie haben ihr System gebrochen. Die Datei wird nur gelesen, wenn sie Bash-Sitzungen mit dem Argument '--login' startet, um sie explizit zu einer Anmeldeshell zu machen. Das wird niemals automatisch auf ihrem Desktop passieren.
Jonathan Hartley

5

Das heißt, die Datei existiert nicht. Sie können die Datei jedoch erstellen und die Datei bashausführen / als Quelle angeben, wenn sie bashals Anmeldeshell aufgerufen wird. Sie melden sich also immer über eine Shell an (zum Beispiel über ssh).

Wenn der Inhalt bei jedem Öffnen eines Terminals ausgeführt werden soll, sollten Sie .bashrcstattdessen die Datei ändern .


Können Sie sich ein Bild davon machen, warum die Datei .bash_profile fehlt?
Roledenez

Sie können es aus dem /etc/skel/Verzeichnis kopieren .
Frantique

Es ist eine Designentscheidung von Canonical. Das heißt aber nicht, dass man das nicht kann.
Chaos

Ich habe .bash_profilein Kommentaren zu anderen Antworten erklärt, warum Ubuntu fehlt (und nicht funktioniert).
Jonathan Hartley

2

Top-Antwort zu verwenden, ~/.profileanstatt ~/.bash_profilehat bei mir nicht funktioniert.

Änderung hat .bashrcfunktioniert

Gerade:

vim ~/.bashrc

Hinweis: Ich verwende Ubuntu WSL.


Unter echtem Linux wird das Profil angewendet, wenn Sie sich an der GUI anmelden oder eine Remoteverbindung herstellen oder sich an der Konsole anmelden, dh nachdem Sie Strg + Umschalt + F2 gedrückt haben. Es soll das erste Mal darstellen, dass Sie sich bei der Maschine anmelden und eine Shell erstellen, die allen anderen Prozessen übergeordnet ist, die Sie anschließend erstellen. Ich vermute, dass es auf der WSL nichts davon gibt, sodass Ihr .profile möglicherweise nie gelesen wird.
Jonathan Hartley

gleiche für mich. ~/.profilenur nicht standardmäßig in Ubuntu 18.04 geladen
javapowered

0

Wenn Sie die .bashrc-Datei meinen, finden Sie sie in Ihrem Home-Ordner. Wenn es nicht vorhanden ist, können Sie es aus dem Ordner / etc / skel in Ihren Ausgangsordner kopieren.

Wenn Sie weitere Informationen zu diesem Thema benötigen, besuchen Sie bitte die Seite stefaan lippens.

http://stefaanlippens.net/bashrc_and_others

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.