GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Wie kann ich Bash als Login-Shell verwenden, wenn der Sysadmin mich nicht ändern lässt?

Der Unix-Systemadministrator, an dem ich arbeite, zögert, mir Zugriff zu gewähren, um meine Login-Shell von ksh zu ändern zu bash . Er hat verschiedene Ausreden vorgebracht, die lustigste war, dass sie alle ihre Skripte für ksh schreiben Sie funktionieren nicht, wenn ich versuche, sie auszuführen. Ich weiß nicht, woher er diese Ideen hat, aber da ich ihn nicht überzeugen kann, gibt es eine Alternative, die ich habe?

(chsh ist auf diesen Computern installiert, aber wir verwenden öffentliche/private Schlüsselpaare für die Anmeldung, und ich habe kein Passwort, also wenn chsh fordert mich zur Eingabe eines Passworts auf, das ich ihm nicht geben kann. )

Akzeptierte Antwort:

Wenn Sie sich anmelden, wird die Datei ~/.profile wird von der Login-Shell gelesen (ksh für Sie). Sie können diese Login-Shell anweisen, sich selbst durch bash zu ersetzen. Sie sollten einige Vorsichtsmaßnahmen treffen:

  • Ersetzen Sie die Login-Shell nur, wenn sie interaktiv ist. Dies ist wichtig:Andernfalls funktioniert die Anmeldung im Grafikmodus möglicherweise nicht (dies ist systemabhängig:einige, aber nicht alle Systeme lesen ~/.profile beim Einloggen über xdm oder ähnliches) und Redewendungen wie ssh foo '. ~/.profile; mycommand' wird scheitern.
  • Überprüfen Sie, ob bash verfügbar ist, damit Sie sich trotzdem anmelden können, wenn die ausführbare Datei aus irgendeinem Grund nicht vorhanden ist.

Sie haben die Wahl, ob Sie bash als Login-Shell ausführen möchten oder nicht. Der einzige große Unterschied darin, es zu einer Login-Shell zu machen, besteht darin, dass es ~/.bash_profile lädt oder ~/.profile . Wenn Sie also bash als Login-Shell ausführen, achten Sie darauf, ein ~/.bash_profile zu haben oder achten Sie darauf, bash nicht rekursiv von ~/.profile auszuführen . ~/.profile hat keinen wirklichen Vorteil eher von bash als von ksh ausgeführt, daher würde ich empfehlen, es nicht zu tun.

Stellen Sie auch die SHELL ein Umgebungsvariable in Bash, sodass Programme wie Terminalemulatoren diese Shell aufrufen.

Hier ist der Code, um zu Bash zu wechseln. Fügen Sie es am Ende von ~/.profile ein .

case $- in
  *i*)
    # Interactive session. Try switching to bash.
    if [ -z "$BASH" ]; then # do nothing if running under bash already
      bash=$(command -v bash)
      if [ -x "$bash" ]; then
        export SHELL="$bash"
        exec "$bash"
      fi
    fi
esac

Linux
  1. So verwenden Sie ein verschlüsseltes Passwort in einem Linux-Bash-Shell-Skript

  2. CentOS / RHEL :So ändern Sie die Anmelde-Shell des Benutzers

  3. So ändern Sie die Standard-Shell in Linux

  4. So ändern Sie die Standard-Shell in Linux

  5. Wie finde ich die Version von Fedora, die ich verwende?

So verwenden Sie den Linux-cd-Befehl zum Ändern des Verzeichnisses

So ändern Sie die GNOME-Shell-Schriftart

So verwenden Sie den Declare-Befehl in der Linux Bash Shell

So ändern Sie die Standard-Shell im Linux-System

Wie verwende ich die Linux-Bash-Shell in Windows 10?

Android - Wie kann ich Shell-Befehle verwenden und mit dem darunter liegenden Linux-System interagieren?