Bearbeitet, um das Problem widerzuspiegeln, das ich unbedingt lösen wollte:
Ich muss meine Ruby-Umgebung einrichten, damit ich sie über Capistrano bereitstellen kann.
export PATH=$HOME/.rbenv/bin:$PATH
eval "$(rbenv init -)"
Ich habe diese in ~ deploy / .profile abgelegt, aber wenn ich sie einsetze, werden sie nicht ausgeführt. Ideen?
Ich verwende Ubuntu 12.04.
Die ursprüngliche Frage war:
Wenn ich bei localhost ein anderes Konto eröffne, wird mein .profile nicht geladen. Wie kann ich ssh zum Laden zwingen? Ich verwende Ubuntu 12.04.
.profile
wird nur für Login-Shells geladen, bei denen eine SSH-Sitzung nicht erfolgt (Standardeinstellung). Wenn Sie möchten, dass beim Start für alle interaktiven Shells etwas ausgeführt wird, geben Sie es.bashrc
stattdessen ein (.zshrc
oder was auch immer Ihre Shell verwendet).Wenn Sie sich nur bei einem anderen Konto auf dem lokalen Computer anmelden möchten, ist ssh wahrscheinlich zu viel des Guten. Vielleicht möchten Sie
su
stattdessen oder etwas verwenden.quelle
.bashrc
nicht geladen zu sein.Die Verwendung von bash sollte zum Lesen führen
~/.bashrc
. Folgendes kann bei ksh und sh (Bash im sh-Modus) hilfreich sein oder wenn Sie~/.bashrc
während der Anmeldung nicht ausgeführt werden.Das sshd prüft
~/.ssh/environment
(überprüfen Sie sshd_config (5) auf Berechtigungen) und~/.ssh/sshrc
oder~/.ssh/rc
. Dies gibt die Möglichkeit,ENV=~/.profile
oderBASH_ENV=~/.profile
und einzurichtenSSH_LOGIN=Y
In
~/.profile
habe ich folgendes Layout (ErsetzenENV
durchBASH_ENV
bei Verwendung von bash):quelle
Bash liest
~/.profile
nur, wenn es sich um eine Anmeldeshell handelt und~/.bash.bashrc
nur, wenn es ein Terminal hat, von denen beim Aufrufen eines Befehls mit ssh keines standardmäßig wahr ist. Es gibt jedoch mehrere andere Optionen, um die Umgebung auf dem Server festzulegen, die leider alle vom System-Setup abhängen:~/.zshenv
auch in diesem Fall; Es gibt jedoch keine entsprechende Konfigurationsdatei für Bash.PermitUserEnvironment
Option in/etc/sshd_config
aktiviert ist, liest ssh~/.ssh/environment
. Leider ist diese Option standardmäßig deaktiviert.pam_env.so
mituser_readenv=1
in aufgerufen wird/etc/pam.d/sshd
, wird es gelesen~/.pam_environment
. Obwohl es nicht die Standardeinstellung des Moduls ist, heißt es zumindest in Ubuntu so .command=
in die Datei mit den autorisierten Schlüsseln eine Anweisung einfügen, die ein Wrapper-Skript aufruft, das die Umgebung festlegt und das$SSH_ORIGINAL_COMMAND
am Ende ausführt. .quelle
Sie haben wahrscheinlich eine
~/.bash_profile
, die überschreibt~/.profile
.quelle