Existe-t-il un moyen de contourner ou d'empêcher l'exécution de ~/.profile
lors de la connexion à un serveur Linux distant à l'aide de ssh ou de putty?
Pour bash:
$ ssh hostname "bash --noprofile"
Si vous souhaitez désactiver tous les scripts de connexion, vous pouvez utiliser l'indicateur --noprofile
pour désactiver /etc/profile
, ~/.profile
, etc. et --norc
pour désactiver ~/.bashrc
de la manière suivante:
$ ssh 127.0.0.1 "bash --noprofile --norc"
N'oubliez pas que vous pouvez également lancer un Shell alternatif, le cas échéant. J'ai dû utiliser ceci après avoir bousillé dans chsh
name__:
$ ssh 127.0.0.1 sh
Cela vous laissera très probablement dans un shell vide (sans invite), donnez-lui un ls
pour vous assurer qu'il fonctionne.
Si votre ordinateur cible est dans un shell bash:
user@Host:/$ ssh hostname "bash --noprofile"
Sinon, si vous souhaitez utiliser un autre profil
user@Host:/$ ssh hostname "bash --noprofile; source ~/.other_profile"
Comme d'autres l'ont mentionné, exécuter bash avec l'indicateur --noprofile
lorsque vous établissez la connexion fonctionnera, bien que, si vous utilisez un autre shell, cela peut être une option ou non.
Une alternative serait que le script de profil détecte lui-même une connexion SSH et se comporte en conséquence. Etant donné que les connexions SSH vont normalement définir un certain nombre de variables d’environnement, ceci peut facilement être vérifié. Ajouter quelque chose comme les lignes suivantes au début de votre profil devrait suffire:
if [ "$SSH_CONNECTION" != "" ]; then
echo Logging in with ssh
return
else
echo Logging in with something that is not ssh
fi
# rest of your profile goes here
return
ignorera le reste du script si la variable d'environnement $SSH_CONNECTION
est définie, ce qui serait normalement créé chaque fois qu'une connexion SSH est établie. Sinon, le profil sera exécuté normalement.
Notez que cela ignorera uniquement le script de profil affecté. Tous les autres scripts de profil (par exemple: /etc/profile
) seront toujours traités, sauf si vous les modifiez de la même manière.
Essayez également d’utiliser un programme FTP tel que WinSCP pour supprimer le fichier de connexion erroné. Cela le supprimera, mais au moins vous devriez pouvoir vous connecter au shell par défaut.