Lorsque vous vous connectez, le fichier ~/.profile
est lu par le shell de connexion (ksh pour vous). Vous pouvez demander à ce shell de se remplacer par bash. Vous devriez prendre quelques précautions:
- Ne remplacez le shell de connexion que s'il est interactif. Ceci est important: sinon, la connexion en mode graphique risque de ne pas fonctionner (cela dépend du système: certains systèmes, mais pas tous, sont lus
~/.profile
lors de la connexion via xdm ou similaire) et des idiomes tels que ssh foo '. ~/.profile; mycommand'
échouent.
- Vérifiez que bash est disponible, de sorte que vous puissiez toujours vous connecter si l'exécutable n'existe pas pour une raison quelconque.
Vous avez le choix d’exécuter ou non bash en tant que shell de connexion. La seule différence majeure en faisant un shell de connexion est que ça va charger ~/.bash_profile
ou ~/.profile
. Donc, si vous utilisez bash en tant que shell de connexion, veillez à ~/.bash_profile
ne pas exécuter bash ou veillez à ne pas l'exécuter de manière récursive ~/.profile
. Il n'y a pas de réel avantage à avoir ~/.profile
exécuté par bash plutôt que par ksh, je vous recommande donc de ne pas le faire.
Définissez également la SHELL
variable d'environnement sur bash, de sorte que des programmes tels que des émulateurs de terminal invoquent ce shell.
Voici le code pour passer à bash. Mettez le à la fin de ~/.profile
.
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
Gilles, arrête de faire le mal
la source
.profile
ne fonctionne que pour le shell de connexion (selon le besoin de l'OP). J'utilise Remote Desktop Connection de Windows 10 pour connecter un poste de travail Linux, puis ouvre Terminal dans gnome. Je veuxzsh
pendant que mon administrateur système me donnebash
. Dans ce cas, je dois ajouter l'extrait au.bashrc
lieu de.profile
.Ceci est légèrement correct, mais vous pouvez faire
bash
en sorte que ce soit le shell que vous utilisez lors de la connexion en créant un.profile
fichier dans votre répertoire personnel, contenantCela entraînera le
ksh
remplacement de labash
session par une session. Vous n'aurez pas à taperexit
(ou^D
) deux fois, comme si vous démarriez manuellement une nouvellebash
session à chaque fois que vous vous êtes connecté. Et en tapantretournera même le chemin à
bash
.la source
exec bash -l
.type
est recommandé ci- dessuswhich
.bash
lirons pas aussi.profile
générant ainsi une boucle infinie? Je conviens que quelque chose dans le sens deexec bash
est ce que vous voulez, mais vous devez vous assurer de ne le faire que pour votre login ksh, donc certaines if-statement sont obligatoires!~/.bash_profile
ou~/.bash_login
L'attribut -l doit être ajouté lors de l'exécution de bash dans la réponse de Giles, de sorte que tous les scripts de profil de connexion soient générés dans le nouveau shell bash. (Par exemple, tout ce qui se trouve dans /etc/profile.d/ sur RHEL). Le script devrait alors être:
la source
-l
option? Je l'utilise depuis des mois sans cela, sans aucun problème.Une réponse
csh/tcsh
inspirée par le plus haut élu de @Gilles estla source
Solaris:
la source