Was ist der Unterschied zwischen ~/.profile
und ~/.bash_profile
?
Was ist der Unterschied zwischen ~/.profile
und ~/.bash_profile
?
Antworten:
Dies .profile
war die ursprüngliche Profilkonfiguration für die Bourne-Shell (aka, sh
). bash
Als Bourne-kompatible Shell wird sie gelesen und verwendet. Die .bash_profile
hingegen wird nur von gelesen bash
. Es ist für Befehle gedacht, die nicht mit der Standard-Bourne-Shell kompatibel sind.
.profile
. ZB bash
und ksh
doch nicht csh
oder tcsh
. Und zsh
bietet beides sh
und csh
Kompatibilität, sodass sowohl .profile
und .login
als auch zsh
bestimmte Punktedateien gelesen werden können.
Das Original sh
stammt .profile
beim Start.
bash
wird versuchen, .bash_profile
zuerst zu beschaffen , aber wenn das nicht existiert, wird es .profile
1 beschaffen .
Beachten Sie, dass beim bash
Starten als sh
(z. B. /bin/sh
als Link zu /bin/bash
) oder beim Starten mit dem --posix
Flag versucht wird, zu emulieren sh
, und nur gelesen wird .profile
.
Fußnoten:
.bash_profile
, .bash_login
,.profile
Siehe auch:
Sie wissen, dass es in der UNIX-Welt viele Shells gibt, aber die meisten davon sind:
/bin/sh
(Erfinder: Stephen Bourne)/bin/bash
(Erfinder: Brian Fox, unter GNU-Projekt) (leistungsstarke Shell)/bin/csh
(Erfinder: Bill Joy, Erfinder des TCP / IP-Stacks)/bin/ksh
(Erfinder: David Korn unter Bell Labs)/bin/zsh
(Leistungsstarke Shell)/bin/tcsh
(abgeleitet von C-Shell)/bin/dash
(Abgeleitet von Almquist-Shell (Ash unter NetBSD-Projekt)) (Dash von Lenny geboren)Aber Ihre Frage betrifft ~/.bash_profile
und ~/.profile
:
Wenn Sie sich bei einem UNIX-Computer anmelden, wird die Weiterleitung in Ihr Basisverzeichnis ausgeführt, entsprechend der Shell, die von einem Administrator im letzten Feld ausgewählt wurde, /etc/passwd
z.
mohsen:x:1000:1000:Mohsen Pahlevanzadeh,,,:/home/mohsen:/bin/bash
Ihre Shell wird ausgeführt und standardmäßig hat jede Shell eine festgelegte Datei für login
und logout
. Wenn Sie in auf bash einzuloggen, ~/.profile
ausgeführt wird , und wenn Sie logout
, ~/.bash_logout
ausgeführt wird.
~/.bash_history
Datei behält Ihren Eingabebefehl.
~/.login
Wenn Sie sich anmelden~/.logout
Wenn Sie sich abmelden~/.tcshrc
das gleiche wie ~./bashrc
in bashSie können die Variable $histfile
als Namen der Verlaufsdatei und die Variable $history
als Anzahl der zu speichernden Befehle festlegen.
In der Tat ist es eine leistungsstarke Shell, und wenn Sie Zeit haben, sollten Sie unbedingt darauf migrieren.
Außer der anderen Shell hat die Z-Shell viele Konfigurations- und Initialisierungsdateien, nur ich schreibe:
$ZDOTDIR/.zshenv
$ZDOTDIR/.zprofile
$ZDOTDIR/.zshrc
$ZDOTDIR/.zlogin
$ZDOTDIR/.zlogout
/tmp/zsh*
/etc/zshenv
/etc/zprofile
/etc/zshrc
/etc/zlogin
Hinweis: Wenn $ZDOTDIR
nicht festgelegt, wird die Startseite festgelegt.
Hinweis: Die TENEX C-Shell wurde aus der C-Shell gegabelt. C-Shell unterstützt von BSD. Wenn Sie mit der C-Programmierung vertraut sind, sollten Sie sich wohlfühlen, da die Syntax ähnlich ist.
~/.login
~/.cshrc
~/.logout
Anmerkung: csh ist alt. Verwenden Sie stattdessen tcsh.
~/.profile
Es ist eine sehr, sehr mächtige Shell, die unter dem GNU-Projekt geboren und von Bourne Shell gespalten wurde.
~/.bash_login
~/.bash_logout
~/.bashrc
~/.bash_profile
~/.bash_history
Wenn Sie sich anmelden, läuft bash ~/.bash_profile
und ~/.bash_profile
läuft ~/.bashrc
. In der Tat ~/.bashrc
ist dies keine Bash-Initialisierungsdatei, da Bash sie nicht ausführt.
Es ist tot. Auch wenn Sie verwenden man sh
, sehen Sie Handbuch von dash
. [Anmerkung des Herausgebers: Das bisschen über dash
gilt nur für Debian und Debian-basierte Distributionen wie Ubuntu.]
~/.bash_profile
arbeite unter bash, aber ~/.profile
arbeite unter Bourne und Korn shell.
Eine Login-Shell ist einfach eine Shell, mit der Sie sich über ssh oder an der Konsole anmelden können. Eine nicht angemeldete Shell ist eine Shell, bei der sich auch jemand nicht anmelden kann. Eine Nicht-Login-Shell wird häufig von Programmen / Systemdiensten verwendet.
Was deinen dritten Punkt betrifft. Es ist wahr, .bashrc
wird auf jeder Instanz der Shell ausgeführt. Wird .bash_profile
jedoch nur beim Login verwendet. Also der Grund für die beiden getrennten Dateien.
.profile
ist für Dinge, die nicht speziell mit Bash zu tun haben, wie Umgebungsvariablen $ PATH, und sollte auch jederzeit verfügbar sein. .bash_profile
ist speziell für Login-Shells oder Shells, die beim Login ausgeführt werden.