2009-12-08 11 views
0

J'ai un script Bash qui initialise une application et définit des paramètres. Un de ces paramètres est l'emplacement à OpenOffice. Maintenant, OpenOffice ne définit pas de variable d'environnement lorsque vous l'installez.Variables d'environnement Bash et recherche de répertoires d'installation

Quelle est la meilleure méthode pour trouver l'emplacement d'une application installée et mettre en cache cette information afin de ne pas avoir à faire les E/S la prochaine fois? Ce que je pensais était simplement d'exécuter une recherche sur/usr/pour le répertoire OpenOffice qui a un fichier spécifique. Quand il est trouvé stocker ce répertoire dans une variable d'environnement et dans ce script vérifier si la variable d'environnement est définie et est un répertoire, si c'est le cas, sinon rechercher à nouveau.

Ceci permettrait au script de fonctionner sans interaction de l'utilisateur mais aussi de permettre à l'utilisateur de définir lui-même un chemin (puisqu'il s'agit d'une variable d'environnement). Cela ressemble à une «mauvaise pratique», alors j'espère que quelqu'un d'autre peut me donner la manière habituelle d'obtenir des informations sur l'installation d'un logiciel. Si cela aide, OpenOffice sera probablement installé en utilisant aptitude.

Répondre

1

La façon dont je l'ai souvent vu faire est avec un code comme ceci:

[ -z "$OO_EXE" ] && OO_EXE=/usr/bin/oo # or whatever the executable is called 

Ensuite, vous pouvez toujours supposer que la variable d'environnement OO_EXE est défini plus tard dans le script. L'utilisateur peut remplacer la valeur par défaut en définissant OO_EXE dans l'environnement avant d'exécuter le script, mais s'il ne le fait pas, le script revient à la valeur par défaut.

Si vous souhaitez rechercher dynamiquement la valeur par défaut lors de la première exécution du script et le réutiliser à chaque fois, je demande à l'utilisateur le chemin lors de la première exécution du script, déposez un fichier point dans l'utilisateur répertoire personnel, et lire à partir de ce fichier à chaque fois.

+0

Idée intelligente. Ce script est un script /etc/init.d pour gérer un démon. Est-ce que c'est une pratique courante d'avoir à poser ce genre de question quand on court pour la première fois? Peut-être que je devrais leur demander cette information quand ils installent le démon? – William

+0

Oui, je pense que demander quand ils installent le démon est une bonne idée. Demander à partir d'un script init.d n'est pas très bon. Comme il s'agit d'un démon, il serait probablement préférable de laisser tomber le fichier de configuration dans/etc plutôt que dans le répertoire personnel d'un utilisateur. –

+0

En fait encore une autre question. Lorsque vous installez une application en utilisant un système de conditionnement (comme aptitude ou yum) et qu'un paquet a une dépendance sur un autre paquet. Comment sait-il où se trouve le fichier si le paquet dit qu'il est déjà là? Il me semble que les paquets sont installés dans différents répertoires basés sur la distribution, cela pourrait être faux. Est-ce qu'ils vérifient simplement la valeur par défaut? Si ce n'est pas le cas, demandez à l'utilisateur de l'entrer? Vous ne connaissez peut-être pas cette réponse, mais si vous le faites, ce serait utile. :) – William

1

De nombreuses applications définissent de telles valeurs lors de leur installation. Par exemple, lorsqu'un utilisateur exécute le script de configuration pour votre application, l'utilisateur a la possibilité de spécifier l'emplacement de ooffice. Le script utilisera cette valeur ou tentera de la trouver ou utilisera une valeur par défaut si l'utilisateur la laisse indéterminée. Lorsque l'application est installée, elle aura une valeur codée en dur.

+0

+1 pour votre réponse. On dirait que je vais finir par faire ça. Merci pour l'aide les gars! – William