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.
Wenn ich falsch liege, korrigiere mich. .Profile wird von jeder Bourne-kompatiblen Shell verwendet, während .bash_profile nur von bash verwendet wird.
Lakesh
2
@lakesh: Ja, jede Shell, die Borowski-Kompatibilität bietet, liest .profile. ZB bashund kshdoch nicht cshoder tcsh. Und zshbietet beides shund cshKompatibilität, sodass sowohl .profileund .loginals auch zshbestimmte Punktedateien gelesen werden können.
Bahamat
Gibt es ein Tutorial, um sich über dieses Bash- und Ksh-Zeug zu informieren?
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:
Eigentlich ist die erste von .bash_profile, .bash_login,.profile
Sie wissen, dass es in der UNIX-Welt viele Shells gibt, aber die meisten davon sind:
Bourne-Shell : /bin/sh(Erfinder: Stephen Bourne)
BASH (Bourne Again Shell): /bin/bash(Erfinder: Brian Fox, unter GNU-Projekt) (leistungsstarke Shell)
C-Shell : /bin/csh(Erfinder: Bill Joy, Erfinder des TCP / IP-Stacks)
Korn-Shell : /bin/ksh(Erfinder: David Korn unter Bell Labs)
Z-Shell : /bin/zsh(Leistungsstarke Shell)
TENEX C-Shell : /bin/tcsh(abgeleitet von C-Shell)
Debian Almquist-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.
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.
Initialisierungsdatei in jeder Shell
TENEX C-Shell
~/.login Wenn Sie sich anmelden
~/.logout Wenn Sie sich abmelden
~/.tcshrcdas gleiche wie ~./bashrcin bash
Sie können die Variable $histfileals Namen der Verlaufsdatei und die Variable $historyals Anzahl der zu speichernden Befehle festlegen.
Z-Schale
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:
Hinweis: Wenn $ZDOTDIRnicht festgelegt, wird die Startseite festgelegt.
C-Shell
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.
Korn Shell
~/.profile
RC-Datei: Benutzerdefiniert
Abmeldedatei: N / A
Bourne Again SHell (BASH)
Es ist eine sehr, sehr mächtige Shell, die unter dem GNU-Projekt geboren und von Bourne Shell gespalten wurde.
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.
Borowski-Schale
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.]
Ihre Antwort
~/.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.
Unterschied zwischen ~ / .profile und ~ / .bash_profile?
Lakesh
2
.profile ist für Dinge, die nicht speziell mit Bash zu tun haben, wie Umgebungsvariablen PATH, und sollte jederzeit verfügbar sein. .bash_profile ist speziell für Login-Shells oder Shells, die beim Login ausgeführt werden.
17.
füge diese Aussage zu deiner Antwort hinzu ... denn was meine Frage ist ...
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 gelesenbash
. Es ist für Befehle gedacht, die nicht mit der Standard-Bourne-Shell kompatibel sind.quelle
.profile
. ZBbash
undksh
doch nichtcsh
odertcsh
. Undzsh
bietet beidessh
undcsh
Kompatibilität, sodass sowohl.profile
und.login
als auchzsh
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 alssh
(z. B./bin/sh
als Link zu/bin/bash
) oder beim Starten mit dem--posix
Flag versucht wird, zu emulierensh
, und nur gelesen wird.profile
.Fußnoten:
.bash_profile
,.bash_login
,.profile
Siehe auch:
quelle
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.Ihre Shell wird ausgeführt und standardmäßig hat jede Shell eine festgelegte Datei für
login
undlogout
. Wenn Sie in auf bash einzuloggen,~/.profile
ausgeführt wird , und wenn Sielogout
,~/.bash_logout
ausgeführt wird.~/.bash_history
Datei behält Ihren Eingabebefehl.Initialisierungsdatei in jeder Shell
TENEX C-Shell
~/.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.Z-Schale
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:
Hinweis: Wenn
$ZDOTDIR
nicht festgelegt, wird die Startseite festgelegt.C-Shell
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.
Anmerkung: csh ist alt. Verwenden Sie stattdessen tcsh.
Korn Shell
~/.profile
Bourne Again SHell (BASH)
Es ist eine sehr, sehr mächtige Shell, die unter dem GNU-Projekt geboren und von Bourne Shell gespalten wurde.
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.Borowski-Schale
Es ist tot. Auch wenn Sie verwenden
man sh
, sehen Sie Handbuch vondash
. [Anmerkung des Herausgebers: Das bisschen überdash
gilt nur für Debian und Debian-basierte Distributionen wie Ubuntu.]Ihre Antwort
~/.bash_profile
arbeite unter bash, aber~/.profile
arbeite unter Bourne und Korn shell.quelle
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.quelle