Was ist der Unterschied zwischen ~/.profileund ~/.bash_profile?
Was ist der Unterschied zwischen ~/.profileund ~/.bash_profile?
Antworten:
Dies .profilewar die ursprüngliche Profilkonfiguration für die Bourne-Shell (aka, sh). bashAls Bourne-kompatible Shell wird sie gelesen und verwendet. Die .bash_profilehingegen wird nur von gelesen bash. Es ist für Befehle gedacht, die nicht mit der Standard-Bourne-Shell kompatibel sind.
.profile. ZB bashund kshdoch nicht cshoder tcsh. Und zshbietet beides shund cshKompatibilität, sodass sowohl .profileund .loginals auch zshbestimmte Punktedateien gelesen werden können.
Das Original shstammt .profilebeim Start.
bashwird versuchen, .bash_profilezuerst zu beschaffen , aber wenn das nicht existiert, wird es .profile1 beschaffen .
Beachten Sie, dass beim bashStarten als sh(z. B. /bin/shals Link zu /bin/bash) oder beim Starten mit dem --posixFlag versucht wird, zu emulieren sh, und nur gelesen wird .profile.
Fußnoten:
.bash_profile, .bash_login,.profileSiehe 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_profileund ~/.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/passwdz.
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 loginund logout. Wenn Sie in auf bash einzuloggen, ~/.profileausgeführt wird , und wenn Sie logout, ~/.bash_logoutausgeführt wird.
~/.bash_historyDatei behält Ihren Eingabebefehl.
~/.login Wenn Sie sich anmelden~/.logout Wenn Sie sich abmelden~/.tcshrcdas gleiche wie ~./bashrcin bashSie können die Variable $histfileals Namen der Verlaufsdatei und die Variable $historyals 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 $ZDOTDIRnicht 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.
~/.profileEs 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_profileund ~/.bash_profileläuft ~/.bashrc. In der Tat ~/.bashrcist 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 dashgilt nur für Debian und Debian-basierte Distributionen wie Ubuntu.]
~/.bash_profilearbeite unter bash, aber ~/.profilearbeite 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, .bashrcwird auf jeder Instanz der Shell ausgeführt. Wird .bash_profilejedoch nur beim Login verwendet. Also der Grund für die beiden getrennten Dateien.
.profileist für Dinge, die nicht speziell mit Bash zu tun haben, wie Umgebungsvariablen $ PATH, und sollte auch jederzeit verfügbar sein. .bash_profileist speziell für Login-Shells oder Shells, die beim Login ausgeführt werden.