Immer wenn ich mich bei meinem Linux-Server anmelde, möchte ich, dass mehrere Befehle automatisch ausgeführt werden (einige Variablen festlegen, Speicherort ändern usw.)
Dies muss bei der Benutzeranmeldung erfolgen, nicht beim Systemstart.
Wie kann ich dies einstellen?
man bash
) lesen .Antworten:
Geben Sie die Befehle ein
~/.bashrc
. Alles, was sich dort befindet, wird jedes Mal ausgeführt, wenn Sie sich anmelden.Wenn Sie Befehle benötigen, die nur ausgeführt werden, wenn Sie sich über ssh anmelden (aber nicht, wenn Sie sich physisch anmelden), können Sie wahrscheinlich das Vorhandensein der
SSH_CONNECTION
Umgebungsvariablen testen und die Befehle nur ausführen, wenn Sie feststellen, dass sie vorhanden sind.quelle
Fügen Sie dies einfach in ~ / .bashrc oder /etc/bash.bashrc ein, wenn Sie dies für alle Benutzer wünschen:
quelle
screen
, könnte ich Ihre Antwort verwenden undscreen
dort anstelle des Echos einfügen. Das Problem dabei ist, dass das Beenden der Bildschirmsitzung zur SSH-Eingabeaufforderung zurückkehrt, anstatt sich abzumelden. Das Schreiben dieses Kommentars gab mir jedoch die Antwort: Fügen Sie denlogout
Befehl nach demscreen
Befehl hinzu.exec command
ersetzt die aktuelle Shell durch alles, was Sie ausführen.Alternativ können Sie einen Befehl angeben, der während des Aufrufs von
ssh
: ausgeführt werden soll.Der letzte Befehl in der Liste sollte eine interaktive Sitzung in Ihrer bevorzugten Shell starten. Wenn Sie viele Befehle ausführen müssen, sollten Sie eine Skriptdatei auf Ihrem SSH-Server erstellen.
quelle
Eigentlich
~/.ssh/rc
ist ein richtiger Ort für Sie Befehl auszuführen hinzuzufügen , wenn Sie sich anmelden, anstatt jeder Benutzer des Systems.quelle
Anmelden am Remote-Host nach Ausführung der an den Remote-Host übergebenen Befehle:
.bashrc
auf dem Remote-Host ausgeführtLässt Sie bei der Bash-Eingabeaufforderung auf dem Remote-Host zurück (wenn keine Fehler vorliegen)
$ ssh user@host "bash -lc cmd; cmd; ..."
Die Option -l macht es zu einer Login-Shell (z. B. .bashrc ausführen)
Die Option -c gibt an, dass der explizite Befehl bash ausgeführt wird
quelle