2 votes

Comment modifier les variables d'environnement comme PATH au démarrage ?

J'essaie d'ajouter /data/bin à la variable PATH au démarrage afin qu'il soit disponible pour toute autre application.
Sous Ubuntu, j'utilise le fichier /etc/environment Je n'ai rien trouvé de semblable dans Android.
J'ai découvert que adb shell détecte /data/bin et l'ajoute à PATH Cependant, le système ne semble pas faire la même chose au démarrage.

2voto

Irfan Latif Points 16863

J'ai découvert que adb shell détecte /data/bin et l'ajoute à PATH Cependant, le système ne semble pas faire la même chose au démarrage.

C'est parce que adb shell démarre un coquille (la valeur par défaut d'Android est MirBSD Korn Shell ) qui lit son fichier de configuration /etc/mkshrc et peut facilement modifier les variables d'environnement. Mais les applications héritent de l'environnement de zygote Nous devons donc définir des variables avant zygote commence.

Editar /init.rc ou tout autre fichier .rc ou créez votre propre fichier. Ajouter ou ajouter des répertoires au répertoire par défaut d'Android PATH :

# /system/etc/init/path.rc

on init
    export PATH /data/bin:/sbin:/system/sbin:/system/bin:/system/xbin:/odm/bin:/vendor/bin:/vendor/xbin

DÉTAILS :

Sur les distros Linux /etc/environment est évalué par PAM (un ensemble de bibliothèques appelées modules) qui est un mécanisme d'authentification centralisé utilisé par des programmes d'administration et d'octroi de privilèges tels que login , su , sshd , passwd , useradd etc. Premier processus init - après le démarrage des services système - nous amène à un shell de connexion ou à un gestionnaire d'affichage (qui démarre un serveur d'affichage comme X.Org pour afficher l'interface graphique), fonctionnant sur un terminal virtuel. Lors de l'ouverture de session d'un utilisateur, les shells et les gestionnaires d'affichage sont configurés pour lire et définir l'environnement à partir de différents fichiers tels que passwd , login.defs , profile , bashrc xsessionrc etc. que l'on trouve habituellement dans les /etc ou de l'utilisateur HOME répertoire. Cet environnement est hérité des utilitaires CLI ainsi que des programmes GUI qui s'exécutent dans un environnement de bureau, y compris les émulateurs de terminal. Les applications qui s'attachent aux terminaux définissent également TERM .

Cependant, sur Android, il n'y a pas de concept de getty , login Les connexions au terminal texte et le système de fenêtres X traditionnel. Il n'y a pas de sessions utilisateur et donc pas de fichiers de connexion. init commence zygote qui charge le cadre Java d'Android, et après avoir démarré les services dans system_server En outre, il divise les machines virtuelles dans lesquelles les applications s'exécutent. Ainsi, la première chose que l'on voit (après la fin de l'animation) est une application ; l'interface système (écran de verrouillage) ou l'application Home/Launcher hébergée par SurfaceFlinger - le serveur d'affichage d'Android. L'environnement principal de tous ces programmes est défini dans le fichier init 's .rc par l'intermédiaire de export commande . /init.environ.rc ( 1 ) exporte des variables telles que ANDROID_ROOT , ANDROID_DATA , ANDROID_STORAGE et autres. Ou bien les programmes définissent eux-mêmes certaines variables, par exemple logd ensembles TZ ( 2 ) pour garantir des horodatages corrects dans les logcat y adbd ensembles EXTERNAL_STORAGE ( 3 ) .

Les variables couramment utilisées pour le cadre Java sont définies aquí . PATH est fixé par init au démarrage ( 4 ) et fait partie des définitions de Bionic libc ( 5 ) . Les utilitaires de l'interpréteur de commandes comme su ( 6 ) y run-as ( 7 ) définir également PATH , HOME , LOGNAME , USER , SHELL etc. DOWNLOAD_CACHE est fixé à /init.rc ( 8 ) y ANDROID_ROOT est fixé par zygote ( 9 ) même.

Les fichiers de configuration spécifiques au shell tels que bashrc o mkshrc sont en lecture seule si vous utilisez adb shell ou un émulateur de terminal.


LECTURE COMPLÉMENTAIRE :

0voto

Gokul NC Points 1917

Modifier le fichier : /system/etc/bash/bashrc y l'exportation votre variable d'environnement là..

En fait, les variables d'environnement par défaut sont prédéfinies dans le fichier du disque dur : init.environ.rc . (Vous pouvez décompresser le boot.img pour le modifier, le reconditionner et le flasher) .

Vous pouvez également modifier ces variables système dans le fichier bashrc fichier lui-même

Vérifier également le /system/etc/mkshrc fichier

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