6 votes

Puis-je mettre à jour les variables d'environnement du shell adb ?

Je voulais mettre à jour le PATH de façon permanente dans le fichier shell adb . J'ai deviné que la coquille était mksh car j'ai trouvé /system/bin/sh pointant vers /system/bin/mksh . Puis j'ai essayé

  • Créer un nouveau fichier /data/.mkshrc et en ajoutant le PATH définition en elle.
  • Copiez le fichier ci-dessus dans / .
  • Copie à /root .

Mais toutes les tentatives ont échoué.

9voto

Par défaut stock Android mksh utilise ce fichier de configuration : /system/etc/mkshrc

9voto

Stu Points 169

En plus de ce qu'Alex-p a écrit vous pouvez également définir le ENV afin de remplacer le chemin d'accès du fichier mkshrc fichier utilisé.

Tous les shells de connexion lisent également /system/etc/profile y $HOME/.profile (c'est un bon endroit pour export ENV ). Apparemment (pour une raison qui défie ma capacité à l'expliquer), adb shell ne démarre pas un shell de connexion¹, cependant, donc /system/etc/mkshrc es le fichier que vous devrez modifier pour cela.

(Disclaimer : Je suis le mksh mainteneur).

Je m'attendrais à ce que "adb shell" se comporte comme ssh et démarre les shells de connexion s'il n'y a pas de commande explicite donnée, comme c'est le cas pour "adb shell". fait démarrer une (nouvelle) session à chaque fois qu'il est exécuté. Les sous-shells seront interactifs mais pas les shells de connexion, bien sûr. Mais ce n'est pas l'endroit pour discuter de cela si cela m'intéresse, j'en parlerai à l'AOSP via Gerrit.

3voto

Chris McCormick Points 131

Pour mettre à jour la variable PATH dans un programme en cours d'exécution adb shell vous pouvez utiliser le expect commande. Cela fonctionne sur un téléphone non enraciné où vous ne pouvez pas modifier les fichiers système comme suggéré dans les autres réponses.

Placez le script suivant quelque part dans le chemin de votre machine de développement, par exemple dans ~/bin/adb-shell-busybox :

#!/usr/bin/expect --
spawn adb shell
expect "$" {
    sleep 0.1
    send "export PATH=/data/data/burrows.apps.busybox/app_busybox/:\$PATH\n"
}
interact

Vous pouvez également injecter toute autre commande de configuration dont vous pourriez avoir besoin.

androidalle.com

AndroidAlle est une communauté de androiders où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X