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.
Réponses
Trop de publicités?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 :
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