Jaka jest różnica między ~ / .profile i ~ / .bash_profile?

Odpowiedzi:

44

.profileBył układ oryginalny profil dla powłoki Bourne (znane sh). bash, będąc powłoką kompatybilną z Bourne, przeczyta ją i użyje. Z .bash_profiledrugiej strony czytają tylko bash. Jest przeznaczony dla poleceń niezgodnych ze standardową powłoką Bourne'a.

bahamat
źródło
Jeśli się mylę, popraw mnie ... .profile jest używany przez dowolną powłokę zgodną z Bourne, podczas gdy .bash_profile jest używany tylko przez bash .. mam rację?
lakesh
2
@lakesh: Tak, każda powłoka zapewniająca kompatybilność bourne będzie czytać .profile. Np. bashI kshale nie cshlub tcsh. I zshzapewnia zarówno shi cshkompatybilność więc będzie czytać zarówno .profilea .login, jak również zshkonkretne pliki dot.
bahamat
czy jest jakiś samouczek do przeczytania na temat tego bash i ksh? nigdy o nich nie słyszałem ...
lakesh
4
Możesz zacząć od historii powłoki UNIX .
bahamat
25

Oryginał shpochodzi .profileze startu.

bashspróbuje .bash_profilenajpierw uzyskać źródło , ale jeśli to nie istnieje, będzie źródło .profile1 .

Zauważ, że jeśli bashjest uruchamiany jako sh(np. /bin/shJest linkiem do /bin/bash) lub jest uruchamiany z --posixflagą, próbuje emulować shi tylko czyta .profile.

Przypisy:

  1. Faktycznie, pierwszy z .bash_profile, .bash_login,.profile

Zobacz też:

Mikel
źródło
2
Niesamowite .. Dzięki ... szczególnie za referencje ...
lakesh
10

Wiesz, że wiele powłok istnieje w świecie UNIX, ale większość z nich to:

  • Powłoka Bourne'a : /bin/sh(wynalazca: Stephen Bourne)
  • BASH (Bourne Again Shell): /bin/bash(Wynalazca: Brian Fox, w ramach projektu GNU) (potężna powłoka)
  • Powłoka C : /bin/csh(Inventor: Bill Joy, Inventor of TCP / IP Stack)
  • Powłoka Korna : /bin/ksh(Wynalazca: David Korn pod Bell Labs)
  • Powłoka Z : /bin/zsh(Potężna powłoka)
  • Powłoka TENEX C : /bin/tcsh(pochodzi z powłoki C)
  • Debian Almquist shell : /bin/dash(Pochodzi z powłoki Almquist (popiół w ramach projektu NetBSD)) (Dash urodzony z Lenny)

Ale Twoje pytanie jest o ~/.bash_profilei ~/.profile:

Gdy logujesz się na maszynę UNIX, przekierowuje ona do twojego katalogu domowego, zgodnie z powłoką wybraną przez administratora w ostatnim polu, /etc/passwdtakim jak:

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

Twoja powłoka działa, a domyślnie każda powłoka ma ustawiony plik dla logini logout. Kiedy logujesz się na bash, ~/.profilejest uruchamiany, a kiedy ty logout, ~/.bash_logoutjest uruchamiany. ~/.bash_historyplik zachowuje polecenie wejściowe.

Plik inicjujący w każdej powłoce

Powłoka TENEX C.

  • ~/.login Po zalogowaniu
  • ~/.logout Po wylogowaniu
  • ~/.tcshrctak samo jak ~./bashrcw bash

Możesz ustawić zmienną $histfilejako nazwę pliku historii, a zmienną $historyjako liczbę poleceń do zachowania.

Skorupa Z.

Rzeczywiście jest to potężna powłoka i jeśli masz wolny czas, koniecznie migruj do niej.

Z wyjątkiem innych powłok, powłoka Z ma wiele plików konfiguracyjnych i plików inicjujących, po prostu piszę:

$ZDOTDIR/.zshenv
$ZDOTDIR/.zprofile
$ZDOTDIR/.zshrc
$ZDOTDIR/.zlogin
$ZDOTDIR/.zlogout
/tmp/zsh*
/etc/zshenv
/etc/zprofile
/etc/zshrc
/etc/zlogin

Uwaga: jeśli $ZDOTDIRnieuzbrojony, zestaw domowy.

Powłoka C.

Uwaga: skorupa TENEX C została rozwidlona z powłoki C. Obsługa powłoki C przez BSD. Jeśli znasz programowanie w języku C, powinieneś czuć się swobodnie, ponieważ jego składnia jest podobna.

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

Uwaga: csh jest stary. Zamiast tego użyj tcsh.

Korn Shell

  • ~/.profile
  • plik rc: zdefiniowany przez użytkownika
  • plik wylogowania: nie dotyczy

Bourne Again SHell (BASH)

Jest to bardzo potężna powłoka, stworzona w ramach projektu GNU i rozwidlona przez Bourne Shell.

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

Po zalogowaniu bash działa ~/.bash_profilei ~/.bash_profiledziała ~/.bashrc. Rzeczywiście ~/.bashrcnie jest to plik inicjujący bash, ponieważ bash go nie uruchamia.

Skorupa Bourne'a

Nie żyje. Nawet gdy używasz man sh, widzisz instrukcję obsługi dash. [Nota redaktora: fragment dashdotyczy tylko Debiana i dystrybucji opartych na Debianie, takich jak Ubuntu.]

Twoja odpowiedź

~/.bash_profilepracuj pod bash, ale ~/.profilepracuj pod skorupą Bourne'a i Korna.

PersianGulf
źródło
2
Chet Ramey był głównym programistą Bash.
tripleee
4

Powłoka logowania to po prostu powłoka, którą można zalogować za pomocą ssh lub konsoli. Powłoka niezalogowana to powłoka, której ktoś też nie może się zalogować. Powłoka niezalogowana jest często używana przez programy / usługi systemowe.

Co do twojego trzeciego punktu. To prawda, że .bashrcjest wykonywany na każdej instancji powłoki. .bash_profileJest jednak używany tylko po zalogowaniu. Zatem przyczyna dwóch oddzielnych plików.

.profiledotyczy rzeczy, które nie są ściśle związane z Bash, takich jak zmienne środowiskowe $ PATH, powinny być również dostępne w każdej chwili. .bash_profilejest specjalnie dla powłok logowania lub powłok wykonanych podczas logowania.

anzenketh
źródło
różnica między ~ / .profile i ~ / .bash_profile?
lakesh
2
Plik .profile jest przeznaczony do rzeczy, które nie są ściśle związane z Bash, takich jak zmienne środowiskowe PATH. Powinien być także dostępny w każdej chwili. .bash_profile jest specjalnie przeznaczony dla powłok logowania lub powłok wykonywanych podczas logowania.
anzenketh,
dodaj to stwierdzenie do swojej odpowiedzi ... bo takie jest moje pytanie ...
lakesh
Co? To nawet nie odpowiada na pytanie?
Mikel