~/.profile
wird ausgeführt, wenn Sie sich im Konsolenmodus und nicht im GUI-Modus anmelden. Sie können Tasten verwenden, F1, F2 ...
um sich im Konsolenmodus anzumelden.
Warum ist PATH in ~ / .profile definiert, obwohl das Starten eines Terminals mit bash nur ~ / .bashrc ausführt?
Ich habe ein guest
Benutzerkonto auf meinem Debian-System mit XFCE-Desktop.
Es wird ~/.profile
standardmäßig eine Datei hinzugefügt. Die letzten Zeilen dieser Datei sind:
# set PATH so it includes user's private bin if it exists if [ -d "$HOME/bin" ] ; then PATH="$HOME/bin:$PATH" fi echo .profile executed
Der letzte echo
Befehl wird von mir hinzugefügt. Ich habe dafür gesorgt, dass es $HOME/bin
existiert.
guest@debian:~$ ls -ld $HOME/bin drwxr-xr-x 2 guest guest 4096 Jan 9 09:42 /home/guest/bin
Nach dem Booten meines Debian-Systems logge ich mich mit meinem Konto bei meinem XFCE-Desktop ein guest
und starte das Terminal (xfce4-terminal). Ich sehe jedoch keine Beweise, ~/.profile
die ausgeführt wurden.
guest@debian:~$ echo $PATH /usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games
man bash
macht ziemlich klar, dass ~/.profile
in einer interaktiven Login-Shell oder einer nicht interaktiven Shell mit der --login
Option gelesen und ausgeführt wird . ~/.bashrc
Wird in einer interaktiven Nicht-Login-Shell ~/.profile
ausgeführt. Es scheint also in Ordnung, dass xfce4-terminal nicht gestartet wird, wenn bash gestartet wird.
Wenn ~/.profile
nicht ausgeführt wird, wenn wir ein neues Terminal starten, warum wird das PATH
Update aktualisiert ~/.profile
?
Sollte Debian das PATH
Update nicht bereitstellen ~/.bashrc
, damit es für den Benutzer verfügbar ist, wenn der Benutzer ein Terminal startet?
4 Antworten auf die Frage
- Beliebte
- Neu
- Mit Kommentaren
- Aktiv
Edit -> Profile Preferences -> Title and Command -> "Run command as a login shell"
Die üblichen ~/.profile
Lasten, ~/.bashrc
falls verfügbar, sofern - $BASH_VERSION
in Ihrer Umgebung vorhanden.
Denken Sie daran, dass dies ~/.profile
ignoriert wird, wenn es ~/.bash_profile
oder ~/.bash_login
in Ihrem Zuhause gibt und das als Ergebnis nicht beachtet ~/.bashrc
wird.
Diese Antwort wurde von hier bezogen, während ein ähnliches Problem untersucht wurde. In dieser Antwort von Unix & Linux wird erwähnt, wie Debian Shell-Konfigurationen mit Links behandelt, die helfen könnten.
Von man bash
:
Wenn bash als interaktive Login-Shell oder als nicht interaktive Shell mit der Option −−login aufgerufen wird, werden zuerst Befehle aus der Datei / etc / profile gelesen und ausgeführt, sofern diese Datei vorhanden ist. Nachdem diese Datei gelesen wurde, sucht sie in dieser Reihenfolge nach ~ / .bash_profile, ~ / .bash_login und ~ / .profile und liest und führt Befehle aus dem ersten vorhandenen Befehl aus, der lesbar ist ....
Wenn eine interaktive Shell gestartet wird, die keine Login-Shell ist, liest und führt bash Befehle aus ~ / .bashrc aus, falls diese Datei vorhanden ist.
ich verstehe das
~/.bashrc
: für interaktive Shell~/.bash_profile
,~/.bash_login
,~/.profile
: Für Login - Shell
Wenn Sie also PATH
in Terminal, einer interaktiven Shell, Änderungen PATH
vornehmen müssen, sollten Sie diese Einstellungen in setzen ~/.bashrc
. oder alternativ können Sie ~/.profile
von ~/.bashrc
jeder Quelle aus, die sich nicht in einer Login-Shell befindet, z.
shopt -q login_shell || . ~/.profile
Was, warum PATH
setzt in wird ~/.profile
als empfohlene Art und Weise, wie ich glaube, dass Benutzer definiert PATH
sollte richtig eingestellt werden, wenn er / sie Logins und „Login“ kann sein bash
, zsh
oder GUI, oder etwas anderes.
Senario 1: Einige Benutzer möchten möglicherweise nicht-X als Standardarbeitsumgebung verwenden. und X wird aufgerufen, indem es startx
normal oder automatisch ab dem ~/.profile
Zeitpunkt der Anmeldung des virtuellen Terminals ausgeführt wird tty7
.
[ -z $DISPLAY -a $XDG_VTNR -eq 7 ] && exec startx
In diesem Fall entschieden Benutzer sorgfältig, was in setzen ~/.profile
, ~/.bashrc
und ~/.xinitrc
, so dass sie die gewünschte Menge von Umgebungsvariablen haben --- PATH
, EDITOR
, VISUAL
, BROWSER
usw .---, ob er / sie arbeitet in:
- Konsolen (Strg + Alt + F [1-6]) oder Anmelden ohne X über
ssh
:~/.profile
+~/.bashrc
- Nicht terminale Programme in X:
~/.profile
+~/.xinitrc
- Terminalemulatoren in X:
~/.profile
+~/.xinitrc
+~/.bashrc
So Einstellung PATH
in ~/.profile
die beste Wahl. Benutzer können festlegen, EDITOR
wie vim
in ~/.profile
(in nicht-X), aber es ändern emacs
in ~/.xinitrc
(in X).
Senario 2: Ein GUI-Benutzer, der sich anmeldet, XFCE
anstatt sich als anzumelden bash
. so PATH
eingestellt werden könnte, ~/.xsessionrc
wie hier erläutert .
Senario 3: Ein zsh
Benutzer kann PATH
in ~/.zprofile
. Interaktive Einstellungen für bash
sind Orte in ~/.bashrc
und interaktive Einstellungen für zsh
werden platziert ~/.zshrc
.
Mein Verständnis war schon immer so, dass .bashrc
es spezifisch für bash und .profile
cross-shell ist. Dies ist möglicherweise kein Problem für die meisten Heimbenutzer, aber ich bin manchmal auf einem System, das Benutzer bevorzugen ksh
(und diese Wahl für neue Benutzer durchsetzen). Wenn Sie aus irgendeinem Grund eine Bournshell erhalten, .profile
wird sie auch verwendet. Beachten Sie, dass zsh und csh keine .profile verwenden.
Verwandte Probleme
-
1
Pausieren Sie alle Aufgaben außer x CPU-intensiven Aufgaben
-
10
Wie kann ich die Bash-Historie durchsuchen und einen Befehl erneut ausführen?
-
2
Kann die Ausgabe eines Befehls an zwei andere Befehle weitergeleitet werden?
-
8
Benennen Sie eine Gruppe von Dateien mit einem Befehl um
-
2
Warum aktualisiert sich mein Pfad nicht * jetzt *?
-
5
Wie entferne ich einen symbolischen Link zu einem Verzeichnis?
-
8
Rette mich vor dem Kauderwelsch
-
9
Wie kann ich jeder Zeile einer Textdatei eine Zeilennummer und einen Tabulator voranstellen?
-
1
Wann sollte ich Konfigurationen in .bashrc vs einfügen? .bash_profile?
-
1
Umleitung: Wie kam das zusätzliche Wort in die Datei?