Je travaille sur un compte Linux distant d'une université, et le Shell par défaut est tristement csh
sans compléter l'onglet. Comment puis-je changer le Shell par défaut de mon compte en bash
? chsh
n'est pas disponible.
Réponses
Trop de publicités?Vous devriez probablement essayer de demander à vos sysadmins s'ils peuvent changer votre Shell par défaut pour vous. S'ils ne peuvent pas ou ne veulent pas (comme c'était le cas quand j'étais à l'université), la solution de contournement que j'ai utilisée était d'ajouter
# Exec bash if using an interactive shell.
if ($?prompt) then
setenv SHELL /path/to/bash
exec $SHELL
endif
à .cshrc
. (Assurez-vous de remplacer /path/to/bash
avec un vrai chemin, bien sûr. Cela pourrait même être une version de bash
qui réside sous votre répertoire personnel, si la version fournie par le système est trop dépassée à votre goût). Pour des raisons d'efficacité, il est préférable d'effectuer cette opération dès le début du processus d'installation. .cshrc
dans la mesure du possible, afin d'éviter des .cshrc
traitement qui deviendra discutable une fois que bash
remplace le csh
processus.
Vous pouvez simplement vous connecter avec
ssh -t yourhost bash
pour exécuter le Shell de Bash automatiquement lorsque vous vous connectez.
Dans les commentaires ci-dessous, vous pouvez voir l'alternative
ssh -t yourhost exec bash
exec
va lancer un nouveau processus et quitter l'ancien, de sorte que l'option csh
se terminera directement.
Si append -l
à la fin de la commande comme argument à Bash, il sera traité comme un login Shell, mais peut-être que ce n'est pas nécessaire.
La meilleure solution que j'ai trouvée se trouve sur stackexchange. Voici le lien stackexchange et voici la solution :
créez un fichier .profile dans votre répertoire personnel et collez-y les éléments suivants, ou ajoutez-les à la fin de votre .profile si vous en avez déjà un.
case $- in
*i*)
# Interactive session. Try switching to bash.
if [ -z "$BASH" ]; then # do nothing if running under bash already
bash=$(command -v bash)
if [ -x "$bash" ]; then
export SHELL="$bash"
exec "$bash"
fi
fi
esac