Mein Problem ist, dass ich env-Variablen (wie GIT_EXEC_PATH) auf einem Server setzen muss. Ich brauche diese Variablen für jede Verbindung (also auch für Bash und Remote-Befehle). Ich habe es geschafft, diese Variablen durch Bash mit .bash_profile festzulegen, aber ich habe Probleme mit den Remote-Befehlen. Ich habe festgestellt, dass es möglich ist, Befehle in ~ / .ssh / authorized_keys vor dem eigentlichen rsa-Schlüssel zu schreiben, aber ich möchte nicht immer dort schreiben, ich brauche eine dauerhafte Lösung ... Ich habe festgestellt, dass ~ / .ssh Die / rc-Datei wird bei jedem ssh-Login ausgeführt, daher habe ich dort meine env-Variablendeklarationen abgelegt, aber es hat nicht funktioniert. Die Variablen werden in der RC-Datei festgelegt, aber danach sind sie verschwunden. : S Möglicherweise wird die RC-Datei in einer Subshell ausgeführt: S Gibt es eine Möglichkeit, diese Variablen in Bash und in Remote-Befehlen ohne Codeduplizierung zu definieren?
Bearbeiten:
Ich habe die Frage bearbeitet, da der Server ein von Godaddy gemeinsam genutzter Host ist und daher eine eindeutige Konfiguration hat. Die Dateien / etc / ssh / sshd_config und / etc / ssh / ssh_config sind leer. Es gibt Kommentare in diesen Dateien, wenn Sie neugierig sind, kann ich es hier kopieren.
- Das ~ / .bash_profile wird bezogen (nur über Bash-Verbindungen).
- das ~ / .bashrc wird nie bezogen,
- das ~ / .profil wird nie bezogen,
- Die ~ / .ssh / -Umgebung wird niemals bezogen.
- Das ~ / .ssh / rc wird bezogen (sowohl von Bash als auch von Remote), aber ich denke, es wird in Subshell aufgerufen, da die Variablen verschwinden.
- Die ~ / .ssh / autorisierten_Tasten werden jedes Mal von bezogen, aber ich muss die Befehle vor jedem rsa-Schlüssel schreiben (damit ich nicht damit konfigurieren möchte).
Zusammenfassung:
Ich kann die Bash gut konfigurieren (mit .bash_profile), aber ich kann die Remote-Aufrufe nicht konfigurieren. Das ist das Problem. Ich suche nach einer Datei, die sowohl von Bash- als auch von Remote-Befehlen stammt.
Beispielsweise:
Der Befehl git-upload-pack findet die exe-Datei, da die env-Variable GIT_EXEC_PATH festgelegt ist, aber mit remote: "git clone user@domain.com: myrepo local / myrepo" findet der Server diesen Befehl nicht, da GIT_EXEC_PATH ist nicht eingestellt.
Edit2:
Nach diesem , und meinen printenv Protokollen: der ~ / .ssh / rc in der normal Shell ausgeführt wird , nicht in Subshell, so ist es ein Rätsel ist , warum die env Variablen nicht kleben ...
Ich habe eine ausführbare Datei erstellt: ~ / logenv :
echo "" >> mylog.txt
date >> mylog.txt
printenv >> mylog.txt
echo "" >> mylog.txt
Und füge dies in das ~ / .ssh / rc ein :
export AAA=teszt
source ~/logenv
Durch Bash Login & "Source Logenv" war das Ergebnis:
Tue May 15 04:21:37 MST 2012
TERM=cygwin
SHELL=/bin/bash
SSH_CLIENT=censored
SSH_TTY=/dev/pts/2
USER=myuser
AAA=teszt
MAIL=/var/mail/myuser
PATH=/usr/local/bin:/bin:/usr/bin
PWD=/home/content/65/7962465
SHLVL=3
HOME=/var/chroot/home/content/65/7962465
LOGNAME=myuser
SSH_CONNECTION=censored
_=/usr/bin/printenv
Tue May 15 04:21:41 MST 2012
HOSTNAME=censored
TERM=cygwin
SHELL=/bin/bash
HISTSIZE=1000
SSH_CLIENT=censored
Per Remote "ssh myuser@domain.com 'exec ~ / logenv'" war das Ergebnis:
Tue May 15 04:25:52 MST 2012
SHELL=/bin/bash
SSH_CLIENT=censored
USER=myuser
AAA=teszt
MAIL=/var/mail/myuser
PATH=/usr/local/bin:/bin:/usr/bin
PWD=/home/content/65/7962465
SHLVL=3
HOME=/var/chroot/home/content/65/7962465
LOGNAME=myuser
SSH_CONNECTION=censored
_=/usr/bin/printenv
Tue May 15 04:25:52 MST 2012
SHELL=/bin/bash
SSH_CLIENT=censored
USER=myuser
PATH=/usr/local/bin:/bin:/usr/bin
MAIL=/var/mail/myuser
PWD=/home/content/65/7962465
HOME=/var/chroot/home/content/65/7962465
Die RC-Datei wird also bezogen, aber danach verschwinden die Variablen ...: S.