2010-05-23 16 views
10

Ich schreibe ein kleines Installationsskript für einige Software. Alles was es tut, ist ein tar tar zu entpacken, und dann möchte ich einige Umgebungsvariablen festsetzen - hauptsächlich den Speicherort der entpackten Bibliotheken und das Aktualisieren von $ PATH. Muss ich die Datei .bashrc programmgesteuert bearbeiten, indem ich zum Beispiel am Ende die entsprechenden Einträge hinzufüge, oder gibt es einen anderen Weg? Was ist Standard?Wie programmiere ich eine permanente Umgebungsvariable in Linux?

Bearbeiten: Das Paket enthält eine Reihe von Run-Skripten (20+), die alle diese benannten Umgebungsvariablen verwenden, also muss ich sie irgendwie einstellen (die Variablennamen wurden so gewählt, dass eine Kollision extrem unwahrscheinlich ist)

Antwort

16

LSB-konform (siehe spec) Übung ist ein Shell-Skript in /etc/profile.d/ Ordner erstellen.

Benennen Sie es nach Ihrer Anwendung (und stellen Sie sicher, dass der Name eindeutig ist), stellen Sie sicher, dass der Name mit .sh endet (Sie können auch Skripts für andere Shells hinzufügen) und export die Variablen, die Sie im Skript benötigen . Alle *.sh Skripte aus diesem Verzeichnis werden bei der Benutzeranmeldung gelesen - die gleiche Zeit /etc/profile ist source d.

Beachten Sie, dass dies nicht durch bash erzwungen wird; Es ist eher eine Art von Vereinbarung.

+0

ok das sieht aus wie es könnte die lösung sein. Vermutlich muss das Installationsprogramm als root ausgeführt werden, um hier ein ausführbares Skript zu schreiben. –

+0

Wird dieses Skript auch von Diensten gelesen? Zum Beispiel Apache oder Kater? – Tobia

3

Standardmäßig wird in Verzeichnisse installiert, die sich bereits im Pfad und im Verzeichnis der Standardbibliothek befinden. Daher müssen diese Variablen nicht aktualisiert werden.

Aktualisierung .bashrc ist unter anderem etwas fehleranfällig; Was ist, wenn ein Benutzer eine andere Datei oder Shell verwendet?

+1

+1 richtig. Benutzer wären sehr unglücklich, wenn Sie versuchen würden, ihre .bashrc für sie zu bearbeiten. Wenn Sie in ein nicht standardmäßiges Verzeichnis installieren möchten - oder nicht glauben, dass Ihr Benutzer die Berechtigung dazu hat -, geben Sie "--install-dir = mydir" an und teilen Sie ihnen mit, was sie zu ihrer Umgebung hinzufügen müssen . Es gibt ein gutes Beispiel unter http://golang.org/doc/install.html – msw

+0

Ja, ich dachte, dass das Bearbeiten von .bashrc aus mehreren Gründen zweifelhaft wäre. Das Problem ist, dass die Software eine Reihe von Skripten (20+) enthält, die alle diese genannten Umgebungsvariablen verwenden - also muss ich sie irgendwie einstellen. –

+2

Eine Möglichkeit besteht darin, sie in einem Wrapper-Skript zu finden, das Ihre Skripte aufruft. – WhirlWind

2

Sie können auch ein Skript generieren und installieren, das diese Variablen festlegt. Die Benutzer Ihres Pakets erhalten dann dieses Skript oder kopieren ihren Inhalt in ihre eigene Shell-Init-Datei.

+4

Oder ein Wrapper-Skript ruft das var-setting-Skript unter einem bekannten Namen und einem bekannten Namen auf und ruft dann die ursprüngliche ausführbare Datei auf. –

Verwandte Themen