Wenn Sie die PS1
Variable nur senden möchten und sie kein '
(einfaches Anführungszeichen) enthält, versuchen Sie Folgendes:
ssh targethost -t "PS1='$PS1'; exec bash"
Das lokale .bashrc
überschreibt möglicherweise PS1
(danke an Dennis Williamson für den Hinweis).
Es gibt Möglichkeiten, Umgebungsvariablen über ssh zu übertragen , diese sind jedoch in der Serverkonfiguration normalerweise deaktiviert. Wenn die PermitUserEnvironment
Direktive in der Serverkonfiguration aktiviert ist und jeder Benutzer ein eigenes Schlüsselpaar hat (ja, vielleicht haben Sie nicht so viel Glück), können Sie environment="PS1=…"
die Zeile ~/.ssh/authorized_keys
entsprechend Ihrem Schlüssel hinzufügen .
Wenn Sie Ihre eigene Konfiguration für ein freigegebenes Benutzerkonto beibehalten möchten, können Sie ein eigenes Konfigurationsdateiverzeichnis erstellen und die HOME
Umgebungsvariable so einstellen , dass sie auf dieses Verzeichnis verweist.
ssh targethost mkdir mrstatic.home
scp .bashrc targethost:mrstatic.home/
Erstellen Sie im mrstatic.home
Verzeichnis symbolische Links, die auf den entsprechenden Eintrag im übergeordneten Verzeichnis verweisen, wenn Sie eine Datei für die anderen Benutzer freigeben möchten.
Dann melde dich an mit
ssh targethost -t 'HOME=~/mrstatic.home; exec bash'`
Wenn Sie die Fernbedienung .profile
(oder eine andere Initialisierungsdatei) ändern möchten, können Sie Ihre Einstellungen möglicherweise automatisieren. Viele Sites lassen LC_*
Umgebungsvariablen durch (normalerweise werden sie für Gebietsschemaeinstellungen verwendet). Wenn beide Bedingungen erfüllt sind, können Sie beispielsweise LC_USER
auf der Clientseite eine Variable festlegen, die nicht für Gebietsschemas verwendet wird , und diese auf dem Server testen .profile
.
(Natürlich sind gemeinsame Konten eine schlechte Idee, aber ich weiß, dass Sie möglicherweise nicht in der Lage sind, diese Situation zu ändern.)
"PS1='$PS1' bash -i"
(und warum auch nichtexec
)?PS1
, wenn er beim Starten der Shell überschrieben würde. No exec: Während des Testens auf meinem System schien es keinen Unterschied zu machen - kein zusätzlicher Prozess..bashrc
wahrscheinlich überschrieben wirdPS1
.Stelle deine PS1-Eingabeaufforderung in ~ / .ssh / environment und ssh session überträgt sie auf jeden Host, den du anmeldest. Es funktioniert bei mir mit openssh 4.3p2.
quelle
PermitUserEnvironment
, die standardmäßig deaktiviert ist.Sie können Umgebungsvariablen auf der Client-Seite angeben. Wenn der SSH-Server dies zulässt (check man sshd-config), werden diese Variablen in die Sitzung kopiert, wenn Sie sich auf dem Computer anmelden.
Sie müssten also die .bashrc-Datei auf dem Server konfigurieren, um eine vorhandene PS1 (oder eine beliebige Variable) zu überprüfen, und PS1 nur festlegen, wenn sie nicht bereits festgelegt ist.
Oder, um
source joes_bashrc
die Arbeit zu vereinfachen, bündeln Sie Ihre Einstellungen in einer Funktion .. und stellen diese Funktion entweder als spezielle Datei Ihrer Quelle auf Anfrage ( ) oder direkt auf der .bashrc bereit. Eine eigene Datei zu haben scheint etwas robuster zu sein. Die anderen Benutzer verwenden möglicherweise Ihre Einstellungen, sind jedoch nicht dazu gezwungen.quelle
Logins nicht teilen. SSH wie Sie, dann tun
sudo -su shareduser
(-s
bedeutet "Shell").Stellen
sudo
Sie sicher, dass Sie Ihr Home-Verzeichnis behalten:quelle
Wenn Sie es tun möchten, ohne einen zusätzlichen scp zu benötigen, können Sie so etwas tun:
ssh -t srvname ' cp ~/.bashrc ~/.bashrc.n &>/dev/null ; echo "LS_COLORS=\"no=00:fi=00:ETC:ETC:ETC\";" >> ~/.bashrc.n ; echo "export LS_COLORS" >> ~/.bashrc.n ; echo "alias ls=\"ls --color=auto\";" >> ~/.bashrc.n ; exec bash --rcfile ~/.bashrc.n'
Dadurch wird eine .bashrc.n-Datei generiert, die auf der bashrc-Datei des Servers, jedoch mit Ihren Außerkraftsetzungen, basiert.
quelle
Wenn Sie bereit sind unmerklich auf Ihren Kollegen zu stören, und Sie können ihnen vertrauen nicht mit Ihrer Präferenz zu stören, dann schlage ich eine Kombination aus Cyruss Antwort , Akiras Antwort und die Antwort von Dennis Williamson .
~/.bashrc
und hinzufügen Sie auf jedem Server Am Ende. Während Ihre Kollegen "es nicht schätzen würden, über das Basisprofil zu schreiben", werden sie sich dessen nicht bewusst sein, es sei denn, sie suchen danach.Ich glaube, dass dies ziemlich klar ist, aber: Der
ssh
Befehl bewirkt, dass dieUnf
Variable auf dem Remote-Server festgelegt wird, wenn Sie sich anmelden. Dadurch wird Ihr Code in der Fernbedienung aufgerufen.bashrc
, wodurch Ihre Anpassungen wirksam werden. Da Sie Ihren Code am Ende von einfügen.bashrc
, werden die allgemeinen Einstellungen zu einem früheren Zeitpunkt in der Datei überschrieben.Offenlegung: Ich habe dies nicht getestet.
quelle
Der einfachste Weg ist meiner Meinung nach:
quelle
PROMPT_COMMAND
Fall ist, scheint das Festlegen (das jedes Mal ausgeführt wird, wenn die Shell eine Eingabeaufforderung ausgibt) eine sehr umständliche Methode zur Lösung dieses Problems zu sein. Und da es etwas geheimnisvoll ist, sollte jede Antwort, die darauf hindeutet, eine Erklärung darüber enthalten, wie es funktioniert.Sie könnten Dinge tun, wie das Mounten Ihres Hauses über sshfs / nfs, aber die einfachste Lösung besteht darin, Ihren bashrc auf die neue Maschine zu übertragen. Das bringt auch Aliase und so.
quelle