Quelqu'un a-t-il réussi à modifier l'invite du shell dans Cyanogenmod ? Actuellement, # est assez inutile, il serait beaucoup plus agréable d'afficher au moins le répertoire de travail. De plus, la saisie par tabulation est-elle possible ?
Réponse
Trop de publicités?Je n'aime pas trop le pourquoi, mais sh
sur CyanogenMod est un peu édulcoré. Comme Joachim l'a noté dans les commentaires, habituellement vous pouvez modifier PS1
pour changer votre invite, mais il ne développe pas correctement les variables d'invite :
# ps $$ <-- Just showing that the current shell is /system/bin/sh
ps $$
USER PID PPID VSIZE RSS WCHAN PC NAME
root 1055 129 756 340 c006abb8 afd0c44c S /system/bin/sh
# echo $PS1
echo $PS1
#
# PS1="\w # "
PS1="\w # "
\w # <-- \w should be PWD
Cependant, CyanogenMod est livré avec une version modifiée de l'interface utilisateur. sh
appelé ash
(je crois que c'est pour Android Shell), qui supporte un sous-ensemble de ces variables d'invite. Voici quelques exemples de ce qui fonctionne et ne fonctionne pas, avec l'écho local supprimé pour des raisons de clarté et d'espace :
# ash
~ # echo $PS1
\w \$
~ # PS1="\u \w \\$ "
root ~ # PS1="\t \w \\$ "
~ # PS1="\l \w \\$ "
l ~ # PS1="\H \w \\$ "
H ~ # PS1="\h \w \\$ "
localhost ~ # cd /sdcard
localhost /mnt/sdcard #
Quant à la complétion des onglets : Je ne connais personnellement aucun moyen de la faire fonctionner. J'imagine que le principal problème est que le shell adb met en mémoire tampon les entrées jusqu'à ce que vous appuyiez sur la touche Entrée, de sorte que la tabulation n'est pas réellement envoyée au programme shell lorsque vous appuyez dessus. Une bonne illustration de ceci est d'ouvrir un fichier avec more
. Le site q permet de quitter le more
mais vous devez en fait appuyer sur q puis appuyez sur la touche Entrée pour quitter parce que l'écran initial q n'est pas envoyée tant que vous n'avez pas appuyé sur la touche Entrée pour envoyer la totalité du tampon.
Ok, SSH est une bête différente. En supposant que vous ayez un client raisonnablement sain. ash
vous donnera la possibilité de compléter les tabulations ainsi que l'expansion de la variable d'invite mentionnée ci-dessus. Si vous utilisez dropbear (le démon ssh livré avec CyanogenMod), vous pouvez alors configurer ash
pour être l'invite par défaut en vous connectant à votre appareil (soit par SSH, soit par l'intermédiaire d'une carte de crédit). adb shell
fonctionne ici) et faire ce qui suit :
# echo "/system/xbin/ash" > /data/dropbear/.profile
Cela suppose /data/dropbear/.profile
n'existe pas encore, car il écrasera toute version existante (ce fichier n'est cependant pas créé automatiquement). Il peut être édité à la place si le fichier existe déjà, bien sûr. Ensuite, redémarrez dropbear et connectez-vous à nouveau. Vous devriez arriver à un ash
session :
login as: root
Authenticating with public key "rsa-key-20110718"
TRACE (1391): entering fake-getpwnam
TRACE (1391): leaving fake-getpwnam
TRACE (1391): enter sign_key_free
TRACE (1391): enter dsa_key_free
TRACE (1391): leave dsa_key_free
TRACE (1391): enter rsa_key_free
TRACE (1391): leave rsa_key_free
TRACE (1391): leave sign_key_free
/data/dropbear # ps $$
USER PID PPID VSIZE RSS WCHAN PC NAME
root 1392 1391 1084 416 c006abb8 afd0c44c S /system/xbin/ash
/data/dropbear #