Quelles variables d’environnement sont disponibles lors du démarrage du script à l’aide du processus d’initialisation init.d?

Mon problème est le suivant (le système d’exploitation est Sun Solaris ):

  1. Au démarrage, je veux lancer un processus en utilisant un script spécifique. Je le fais en plaçant ce script dans /etc/init.d (et en suivant les autres règles K et S).

  2. Le programme qui sera appelé par le script est situé à l’emplacement $HOME/xxx/yyy .

  3. J’utilise 'su - {myuser} -c "{full path of the program}"' pour exécuter le script en tant que {myuser}.

  4. Je ne veux pas coder en dur la valeur de $ HOME dans le script, mais je souhaite utiliser uniquement la variable d’environnement $HOME . Comment puis-je obtenir cette variable d’environnement $HOME dans le script shell? Aussi, quelles autres variables seront à ma disposition?

Pour obtenir la variable d’accueil de n’importe quel utilisateur, essayez ce hack:

 HOME=`sudo -u myuser -s "cd ~; pwd"` 

Juste mettre

 env > env.txt 

dans le script. Après avoir exécuté votre script, le fichier env.txt contient toutes les variables d’environnement.

2) Quel utilisateur a $ HOME? root $ s HOME ou myuser $ ACCUEIL

S’il s’agit de myuser, utilisez simplement $ HOME dans le script enfant et ne l’utilisez pas dans le script init.d. Cela sera défini pour vous par le processus de shell que vous démarrez. Lorsque vous faites su - {myuser} vous su - {myuser} à su d’exécuter le shell de connexion de myuser (tel que défini dans / etc / passwd). Le shell de connexion définira les variables d’environnement par défaut en fonction du shell utilisé. Consultez la documentation de votre shell pour plus de détails. Sur Solaris, il s’agit probablement de ksh ou de bourne shell.

3) Faites su - myuser -c /usr/bin/env . Cela imprimera les variables d’environnement qui seront définies dans le script enfant.