it-swarm.com.de

Was ist der Unterschied zwischen ~ / .profile und ~ / .bash_profile?

Was ist der Unterschied zwischen ~/.profile und ~/.bash_profile?

71
lakesh

Das .profile war die ursprüngliche Profilkonfiguration für die Bourne Shell (a.k.a., sh). bash, eine Bourne-kompatible Shell, wird sie lesen und verwenden. Das .bash_profile wird dagegen nur von bash gelesen. Es ist für Befehle vorgesehen, die nicht mit der Standard-Bourne-Shell kompatibel sind.

53
bahamat

Das Original sh hat .profile Beim Start bezogen.

bash wird zuerst versuchen, .bash_profile zu beschaffen, aber wenn das nicht existiert, wird es .profile beschaffen.1.

Beachten Sie, dass wenn bash als sh gestartet wird (z. B. /bin/sh Ein Link zu /bin/bash) Oder mit dem Flag --posix Gestartet wird, es versucht sh zu emulieren und liest nur .profile.

Fußnoten:

  1. Eigentlich der erste von .bash_profile, .bash_login, .profile

Siehe auch:

27
Mikel

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) ( mächtige 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 (Asche unter NetBSD-Projekt)) (Dash geboren von Lenny)

Aber deine Frage handelt von ~/.bash_profile Und ~/.profile:

Wenn Sie sich bei einem UNIX-Computer anmelden, wird dieser gemäß der von einem Administrator im letzten Feld von /etc/passwd Ausgewählten Shell in Ihr Ausgangsverzeichnis umgeleitet, z.

mohsen:x:1000:1000:Mohsen Pahlevanzadeh,,,:/home/mohsen:/bin/bash

Ihre Shell wird ausgeführt, und standardmäßig verfügt jede Shell über eine festgelegte Datei für login und logout. Wenn Sie sich bei bash anmelden, wird ~/.profile Ausgeführt, und wenn Sie logout, wird ~/.bash_logout Ausgeführt. Die Datei ~/.bash_history Behält Ihren Eingabebefehl bei.

Initialisierungsdatei in jeder Shell

TENEX C Shell

  • ~/.login Wenn Sie sich anmelden
  • ~/.logout Wenn Sie sich abmelden
  • ~/.tcshrc Wie ~./bashrc In Bash

Sie können die Variable $histfile Als Namen der Verlaufsdatei und die Variable $history Als Anzahl der zu behaltenden Befehle festlegen.

Z Shell

In der Tat ist es eine leistungsstarke Shell. Wenn Sie Freizeit haben, sollten Sie unbedingt darauf migrieren.

Mit Ausnahme anderer Shell hat 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 gesetzt ist, wird die Startseite festgelegt.

C Shell

Hinweis: TENEX C Shell wurde von C Shell gegabelt. C Shell unterstützt von BSD. Wenn Sie mit der Programmierung der C-Sprache vertraut sind, sollten Sie sich wohlfühlen, da die Syntax ähnlich ist.

~/.login
~/.cshrc
~/.logout

Hinweis: 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 und wurde unter GNU Projekt und geboren von Bourne Shell) geboren.

~/.bash_login
~/.bash_logout
~/.bashrc
~/.bash_profile
~/.bash_history

Wenn Sie sich anmelden, führt bash ~/.bash_profile Und ~/.bash_profile~/.bashrc Aus. In der Tat ist ~/.bashrc Keine Bash-Initialisierungsdatei, da Bash sie nicht ausführt.

Bourne Shell

Es ist tot. Selbst wenn Sie man sh Verwenden, sehen Sie das Handbuch von dash. [Anmerkung des Herausgebers: Das Bit über dash gilt nur für Debian und Debian-basierte Distributionen wie Ubuntu.]

Ihre Antwort

~/.bash_profile Arbeiten unter Bash, aber ~/.profile Arbeiten unter Bourne und Korn Shell.

11
PersianGulf

Eine Login-Shell ist einfach eine Shell, die Sie über ssh oder an der Konsole anmelden können. Eine Shell ohne Anmeldung ist eine Shell, bei der sich auch niemand anmelden kann. Eine Shell ohne Anmeldung wird häufig von Programmen/Systemdiensten verwendet.

Wie für Ihren dritten Punkt. Es ist wahr .bashrc wird auf jeder Instanz der Shell ausgeführt. Jedoch .bash_profile wird nur beim Login verwendet. Daher der Grund für die beiden getrennten Dateien.

.profile ist für Dinge, die nicht speziell mit Bash zusammenhängen, wie Umgebungsvariablen $ PATH, sollte es auch jederzeit verfügbar sein. .bash_profile ist speziell für Login-Shells oder Shells, die beim Login ausgeführt werden.

5
anzenketh