Modifié pour refléter le problème que je voulais vraiment résoudre:
Je dois configurer mon environnement Ruby pour pouvoir déployer via Capistrano.
export PATH=$HOME/.rbenv/bin:$PATH
eval "$(rbenv init -)"
Je les mets dans ~ deploy / .profile, mais quand je ssh dedans, ils ne sont pas exécutés. Des idées?
J'utilise Ubuntu 12.04.
La question initiale était:
Quand je ssh dans un autre compte chez localhost, il ne charge pas mon .profile. Comment puis-je forcer ssh à le charger? J'utilise Ubuntu 12.04.
.profile
n'est chargé que pour les shells de connexion, ce qui n'est pas le cas d'une session ssh (par défaut). Si vous voulez que quelque chose s'exécute au démarrage pour tous les shells interactifs, placez-le à la.bashrc
place (.zshrc
ou ce que votre shell utilise).De plus, si vous voulez simplement vous connecter à un autre compte sur la machine locale, ssh est probablement exagéré. Vous voudrez peut-être utiliser
su
ou quelque chose à la place.la source
.bashrc
ne soit pas chargé non plus.L'utilisation de bash devrait entraîner la lecture
~/.bashrc
. Ce qui suit peut aider avec ksh et sh (bash en mode sh), ou lorsque votre~/.bashrc
n'est pas exécuté lors de la connexion.Le sshd consulte
~/.ssh/environment
(vérifiez sshd_config (5) pour les autorisations) et~/.ssh/sshrc
ou~/.ssh/rc
. Cela donne la possibilité de configurerENV=~/.profile
ouBASH_ENV=~/.profile
etSSH_LOGIN=Y
Dans
~/.profile
J'ai la mise en page suivante (RemplacerENV
parBASH_ENV
lors de l'utilisation de bash):la source
Bash
~/.profile
ne lit que lorsqu'il s'agit d'un shell de connexion et~/.bash.bashrc
uniquement s'il possède un terminal, aucun des deux n'est vrai par défaut lors de l'appel d'une commande avec ssh. Cependant, il existe plusieurs autres options pour définir l'environnement, sur le serveur, toutes malheureusement en fonction de la configuration du système:~/.zshenv
même dans ce cas; il n'y a cependant pas de fichier de configuration correspondant pour bash.PermitUserEnvironment
option est activée dans/etc/sshd_config
ssh, ssh lira~/.ssh/environment
. Malheureusement, cette option est désactivée par défaut.pam_env.so
est appelé avecuser_readenv=1
in/etc/pam.d/sshd
, il lira~/.pam_environment
. Bien qu'il ne soit pas par défaut du module, il est appelé ainsi au moins dans Ubuntu .command=
directive dans le fichier de clés autorisées appelant un script wrapper qui définit l'environnement et exécute le$SSH_ORIGINAL_COMMAND
à la fin (I la commande est une pour shell, donc eval est approprié ici, mais je ne suis pas sûr) .la source
Vous en avez probablement un
~/.bash_profile
qui l'emporte~/.profile
.la source