Was ist ein login shell
und interactive shell
, und was ist ein .bash_profile
und .bashrc
?Was sind die Unterschiede zwischen einer Login-Shell und einer interaktiven Shell?
Antwort
eine interaktive Shell ist ein ohne nicht-Optionsargumente gestartet, es sei denn, es angegeben wird, ohne dass die -c-Option spezifiziert, und deren Eingangs- und Fehlerausgang ist mit Anschlüssen sowohl angeschlossen (wie durch isatty bestimmt (3)), oder man begann mit der Option -i.
Eine interaktive Shell liest im Allgemeinen aus und schreibt an einem Endgerät des Benutzers.
A Login-Shell ist eine Shell, wo Sie sich einloggen. Sie können ein Login-Shell von einem ps -f
Angebote erkennen, wird es einen Bindestrich zu Beginn des Programmnamen, zum Beispiel:
root 3561 3553 0 09:38 pts/0 00:00:00 -bash
qa 7327 3432 0 10:46 pts/1 00:00:00 -bash
Ein interaktiv Shell eine ist, die Befehle liest es Standard-Eingabe ist, normalerweise ein Terminal.
Wenn Sie sich beispielsweise mit einem Xterm oder Terminalemulator wie putty
bei bash anmelden, ist die Sitzung sowohl eine Login-Shell als auch eine interaktive Shell. Wenn Sie dann bash
eingeben, geben Sie eine interaktive Shell ein, aber es ist keine Login-Shell.
Wenn ein Shell-Skript (eine Datei Shell-Befehle enthält) ausgeführt wird, dann ist es weder ein Login-Shell noch ein interaktiver ein.
IBN Dateien sind in bash sehr tailor:
Wenn ein Login-Bash-Shell aufgerufen wird, dann wird /etc/profile
bezogen (in der aktuellen Umgebung ausgeführt wird). Danach werden drei Dateien auf Existenz überprüft. Die Kontrollen für diese Dateien sind in dieser Reihenfolge durchgeführt werden:
wenn /etc/profile
vorhanden ist, Quelle (run) es
wenn ~/.bash_profile exists
, Quelle (run) es
wenn ~/.bash_login exists
, Quelle (run) es
wenn ~/.profile exists
, Quelle (run) es
Sobald eine Übereinstimmung gefunden wird, werden die anderen Dateien ignoriert, selbst wenn sie vorhanden sind. Die Datei /etc/bashrc
wird möglicherweise von den Dateien ~/.bash_profile
und ~/.bashrc
verwendet. Das würde bedeuten, dass die Datei /etc/bashrc
aus allen interaktiven Aufrufen von bash stammt, egal ob es sich um eine Login- oder Nicht-Login-Shell handelt.
So wird die Datei .bashrc
auch jedes Mal ausgeführt, wenn Sie eine neue interaktive Shell anfordern. Dies beinhaltet kein Shell-Skript. Normalerweise werden Variablen, Aliase oder Funktionen in dieser Datei platziert.
Bash-Shell-Skripte lesen bei entsprechender Anweisung eine andere Datei. Wenn der Benutzer (normalerweise in seinem eigenen .bash_profile
) eine Variable BASH_ENV
definiert, die einen Dateinamen enthält, lesen Skripte dies. Wenn diese Variable nicht gesetzt (und exportiert) wird, werden Bash-Skripte keine Startup-Dateien lesen.
Ich bin wirklich dankbar für den wertvollen Kommentar. Vielen Dank ! – caesar
Siehe 'man bash' im Abschnitt' INVOCATION' auf den Dateien, die beim Start geladen werden, die Informationen dort können sehr wahrscheinlich klarer sein. – sjas
Kann es eine Login-Shell geben, die nicht interaktiv ist? Klingt unmöglich. – CMCDragonkai
Da Sie wahrscheinlich wissen, was eine „Schale“ ist und es Ihre Frage nur verwenden, zielt auf die Differenz zwischen Login-Shell und alles andere ...
Ein Login-Shell nur durch die von einer anderen Schale unterscheidet Tatsache, dass ein oder mehrere initiale Setup-Skripte (Ressourcen) beim Start geladen werden, normalerweise mit "profile" in ihrem Namen benannt. Dort sind Grundeinstellungen definiert, die auf nachfolgend geöffnete Shells abgeleitet werden (müssen also nur einmal definiert werden).
- 1. Was sind die praktischen Unterschiede zwischen einer Modulmethode und einer Klassenmethode in Ruby?
- 2. Was sind die Unterschiede zwischen einer Scala-Zukunft und einer Java-Zukunft?
- 3. Was sind die Unterschiede zwischen einer differenziellen Change Map und einer Bulk Change Map?
- 4. Was sind die Unterschiede zwischen einer Standard-Trait-Methode und einer parametrisierten Funktion?
- 5. Was sind die Unterschiede zwischen zweien?
- 6. Was sind die Unterschiede zwischen Opera Unite und Node.js?
- 7. Was sind die Unterschiede zwischen Karma Reportern?
- 8. Was sind die Unterschiede zwischen struct_time und datetime?
- 9. Was sind die Unterschiede zwischen Rust `String` und` str`?
- 10. Was sind die Unterschiede zwischen [Serializable] und [Serializable()]
- 11. Was sind die größten Unterschiede zwischen fopen und curl?
- 12. Was sind die Unterschiede zwischen rbenv, rvm und chruby?
- 13. Was sind die Unterschiede zwischen Haskell und PureScript?
- 14. Was sind die Unterschiede zwischen JVisualVM und Java Mission Control?
- 15. Was sind die Unterschiede zwischen FLAG_ACTIVITY_RESET_TASK_IF_NEEDED und FLAG_ACTIVITY_CLEAR_TOP | FLAG_ACTIVITY_SINGLE_TOP?
- 16. Was sind die Unterschiede zwischen Brillengläsern und Reißverschlüssen? Diese
- 17. Was sind die Unterschiede zwischen & und &&, | und || in R?
- 18. Graph - Was sind die Unterschiede zwischen eingebetteten und topologischen Graphen?
- 19. Was sind die Unterschiede zwischen PECL und PEAR?
- 20. Was sind die Unterschiede zwischen Active Record und Repository-Muster?
- 21. Was sind die Unterschiede zwischen C und C++ Aufrufkonventionen?
- 22. Was sind die Unterschiede zwischen Vanille Perl und Strawberry Perl?
- 23. Was sind die Unterschiede zwischen LDAP und Active Directory?
- 24. Was sind die Unterschiede zwischen WCF und traditionellen ASP.NET Web
- 25. Was sind die Unterschiede zwischen Gleitern und Programmierern?
- 26. Was sind die Unterschiede zwischen to.equal (true) und to.be.true?
- 27. Was sind die Unterschiede zwischen WebAPI und WebAPI 2
- 28. Was sind die Unterschiede zwischen HasOne und Referenzen in Nhibernate?
- 29. Was sind die Unterschiede zwischen .pem, .cer und .der?
- 30. Was sind die Unterschiede zwischen LLVM und Java-Bytecode?
Siehe http://serverfault.com/questions/8882/what-is-the-difference-between-a-login-and-an-interactive-bash-shell – devnull
Siehe auch https: //www.gnu. org/software/bash/manual/html_node/Bash-Startup-Files.html – devnull