Changement de tcsh à bash
Avec l'introduction du système d'opération CentOS 8 dans les laboratoires du DMS, la décision a été prise de changer le shell par défaut de tous les usagers. Pour des raisons historiques, le shell par défaut était auparavant forcé à tcsh, une variante open-source du "C Shell", pour tous les usagers. Comme la plupart des distributions linux utilisent bash (Bourne Again Shell) comme shell par défaut depuis plus d'une décénnie, nous avons décidé de normaliser tous les comptes à ce standard.
Notez que pour la plupart des usagers, vous ne verrez aucune différence, surtout si vous utilisez principalement l'interface graphique dans les laboratoires. Pour ceux qui sont plus adeptes de la ligne de commandes, il y a quelques détails à savoir qui seront expliqué plus bas.
Si vous voulez en savoir plus sur le shell, nous vous invitons à consulter cet article:
https://www.commentcamarche.net/contents/645-linux-le-shell
Fichiers de configuration
Alors que le shell tcsh avait besoin seulement du fichier ".cshrc", le shell bash utilise 3 fichiers, dont un optionnel:
- .bashrc: contient la plupart des configurations, comme le .cshrc
- .bash_profile: était utilisé similairement au .bashrc, mais au fil du temps est devenu seulement un pointeur vers le .bashrc
- .bash_logout: optionnel, ce fichier peut contenir des commandes qui sont exécutées lorsque vous quittez le shell, par exemple lorsque vous tapez "exit" dans un terminal
Si vous n'avez pas ces fichiers dans votre $HOME, vous pouvez copier des exemples du répertoire /etc/skel:
cd cp /etc/skel/.bashrc . cp /etc/skel/.bash_profile . cp /etc/skel/.bash_logout . # optionnel
Vous pourrez ensuite modifier le .bashrc pour y mettre des variables ou autres déclarations selon vos besoins. Tel que noté plus haut, le .bash_profile sert seulement à exécuter le .bashrc, nous vous recommandons de ne pas le modifier.
Déclaration de variables
Bien que les 2 shells soient très similaires, il existe une différence majeure dans la déclaration de variables. Si vous aviez des variables déclarées dans votre .cshrc avec "set" ou "setenv", par exemple:
setenv LANG en_US.utf8
vous devrez les convertir pour utiliser l'instruction "export" dans votre .bashrc, par exemple:
export LANG=en_US.utf8
Notez le symbole "=" entre la nom de la variable et son contenu.
Invite de commande
Un changement mineur entre les 2 shells est l'invite de commande qui est légèrement différente. Sous le tcsh votre invite de commande, si vous ne l'aviez pas modifié, ressemblait à ceci:
euler [~] >
"euler" étant le nom du serveur ou station de travail où vous étiez branché et "~" étant le répertoire courant, dans ce cas-ci votre répertoire maison. Si vous avez copié les fichiers d'exemple du répertoire /etc/skel, votre invite sous bash ressemblera à ceci, avec votre code d'usager, votre station et votre répertoire courant:
[barbeaujp@euler ~]$
Notez que si vous n'avez pas copié les fichiers de configuration, vous aurez l'invite de base qui ressemble à ceci:
-bash-4.2$
Ça ne change en rien votre utilisation du terminal, les commandes vont fonctionner même si votre invite n'est pas configurée.
Si vous le désirez, vous pouvez configurer votre invite de commande dans le .bashrc, il suffit d'assigner une valeur à la variable "PS1", par exemple si vous voudriez ajouter la date et heure dans votre invite:
export PS1="[ $(date "+%T %d/%m/%y") ][ \u@\H: \w ]\$ "
Pour plus d'explications et d'exemples, voir les articles suivants: