Standardmäßig xterm
startet eine interaktive Shell. Sie können sie aber auch so konfigurieren, dass eine interaktiveLogin-Shell.
Das bedeutet, dass Sie beim Starten xterm
dieselbe Art von Shell erhalten wie bei der Anmeldung über SSH/virtuelle Konsole/SU.
Welche Vorteile/Nachteile bietet die Konfiguration einesLogin-Shellin xterm?
Mir fällt da ein:
uptime
,w
,last
usw. melden Sie so viele Benutzer, wiexterm
's geöffnet sind. (Vorteil?)bash
nur Quellen.login
,.profile
,/etc/profile.d
wenn gestartet alsLogin-Shellzsh
hat ähnliche Dateien, die es liest, wenn es gestartet wird alsLogin-Shell- aber auf meinem System sind sie standardmäßig leer
Zugehöriger xterm
Manpage-Abschnitt:
-ls This option indicates that the shell that is started in the xterm window will be a login shell (i.e., the first character of argv[0] will be a dash, indicating to the shell that it should read the user's .login or .profile).
Es gibt auch eine Ressource:
loginShell (class LoginShell) Specifies whether or not the shell to be run in the window should be started as a login shell. The default is “false.”
Antwort1
Wenn Sie eine Login-Shell im Terminal ausführen, wird jedes Programm ausgeführt, das Sie in Ihr eingeben .profile
, auch wenn Sie erwarten, dass dieses Programm nur einmal pro Sitzung ausgeführt wird (z. B. ssh-agent
und andere Schlüsselbunde). Wenn Sie eine Login-Shell ausführen, werden Umgebungsvariablen überschrieben, die Sie in Ihrer Sitzung oder im übergeordneten Prozess des Terminals festgelegt haben.
Das größte Problem, das Benutzer haben, die eine Login-Shell in Terminals ausführen, ist, dass sie ihre Umgebungsvariablen normalerweise nicht festlegen, wenn sie sich bei der GUI anmelden. Der Nachteil dabei ist, dass die Umgebungsvariablen somit nur in Programmen verfügbar sind, die von einem Terminal aus gestartet werden, nicht in Programmen, die direkt über die GUI gestartet werden. Wenn Sie Ihre Umgebungsvariablen beim Anmelden festlegen, ist es bestenfalls sinnlos, sie in jedem Terminal erneut festzulegen, und manchmal ist es ein Problem, wie oben gezeigt.
Siehe auchUnterschied zwischen .bashrc und .bash_profile,Alternative zu .bashrc, und ich habe auf Stack Exchange einige Fragen gesehen, die hätten vermieden werden können, wenn der Fragesteller pro Sitzung Umgebungsvariablen festgelegt hätte.