Ipython comme login shell

python
Tags: #<Tag:0x00007fa92cfed738>

#1

Je vais tenter de changer de login shell.

Jusqu’à présent j’utilise (depuis des années) zsh comme login shell. Il est vraiment bien et je le conseille à qui veut utiliser un shell efficace, mais par goût du changement je voudrais voir ce que ça pourrait donner d’utiliser ipython.

L’intérêt d’ipython c’est qu’on a accès à un langage bien plus sympa que le shell (j’aime beaucoup le shell l’a n’est pas la question) avec beaucoup plus de bibliothèques et puis… Ça permet de briller en soirée.

J’ouvre ce fil pour parler de mes avancées en la matière. Mon point d’entrée principal à la documentation est là https://ipython.org/ipython-doc/3/interactive/shell.html

Pour l’instant je me suis juste choisi un prompt avec comme la conf dans ~/.ipython/profile_default/ipython_config.py:

c = get_config()

c.PromptManager.in_template = r'{color.LightGreen}\u@\h{color.LightBlue}[{color.LightCyan}\Y1{color.LightBlue}]{color.Green}|\#> '

#2

Salut,

Si ça permet d’initier un peu quelque part à Python c’est chouette :slight_smile:

Bon, apparemment, il faut se pencher sérieux dessus quand même.

Aucune raison de faire du bashing ici donc :wink:

Bon courage !
et brille de mille feux


#3

Je garde le fil de côté, je ne connais pas ce shell.
J’ai pas aimais fish, ksh et csh me rebute, zsh est bien et puissant mais demande du temps pour en tirer la quintessence , bash est … passe partout, mais si il y a moyen d’avoir un shell python direct je vote oui !!!
En générale j’ai un env de propre dans un tmux et je passe par du container.


#4

Je doute qu’utiliser ipython comme login shell soit techniquement possible (dans un cas général )

sudo chsh --shell $(which ipython) $USER
ssh localhost id
ssh localhost env | egrep -i 'SHELL|USER|HOME'
ssh localhost 'ls -lAt | head'

Autrement dit, à mon avis on ne peut pas utiliser n’importe quel interpréteur de commandes comme login shell. Il y a tout un tas de suppositions sur le comportement du shell : gestion des terminaux, des pipelines de commandes, …

Il me semble que sous AIX ou Solaris il y a une liste explicite de login shells possibles (c’était au siècle dernier, je ne me rappelle plus très bien ).

Cordialement,
Regards,
Mit freundlichen Grüßen,
مع تحياتي الخالصة


F. Petitjean
Ingénieur civil du Génie Maritime.

Tous les nombres premiers sont impairs, sauf un.
Tous les nombres premiers sont impairs, sauf deux.


#5

Chez moi :

% awk -F: '{print $NF}' /etc/passwd | sort -u
/bin/bash
/bin/false
/bin/sh
/bin/sync
/usr/bin/zsh
/usr/sbin/nologin

nologin, false et sync ne font rien de tout ce que tu décris.

En effet pour que je m’en serve comme login shell, il faudrait que je m’assure qu’il gère bien les TTY, mais pour le reste ce ne sont que des conventions et je n’en ai pas nécessairement le besoin. Et je ne compte m’en servir qu’en local. Ce qui ne change rien au besoin sauf éventuellement dans certains cas d’usages de ssh, il faut que le shell distant récupère correctement les variables d’environnement qu’on lui passe. En principe ça ne pose pas de problème, une fois qu’on a importé os (ce que je vais inclure par défaut), je peux accéder aux variables d’environnement via os.environ['HOME']. Il est possible de rendre cela moins verbeux.


#6

Le builtin reset d’ipython fait aussi un nettoyage de l’environnement (toutes les variables créaient sont détruites), ça peut être utile :slight_smile:


#7

Deux moyens canoniques d’indiquer qu(on ne peut pas se connecter sur certains comptes systèmes, et un compte système particulier sync pour les écritures du cache disque. Donc rien à voir avec la notion de shell de connexion.

Des conventions peut-être, mais ceci exclut de facto de considérer ipython dans son état actuel comme un shell système et donc a fortiori comme un login shell.
Ce n’est pas pour rien que les normes POSIX existent.
Naturellement rien ne vous interdit d’utiliser vos systèmes à votre manière.

Bref C’est vous qui voyez ! et Y’en a qu’ont essayé, ils ont eu des problèmes ! :joy:

Cordialement,
Regards,
Mit freundlichen Grüßen,
مع تحياتي الخالصة


F. Petitjean
Ingénieur civil du Génie Maritime.

Concierge qui roule, ne s’arrête qu’au bas de l’escalier.
Les proverbes philosophiques du Professeur Choron