MacOsx Systemweite Umgebungsvariablen

L

Littlered

Mitglied
Thread Starter
Dabei seit
18.04.2005
Beiträge
33
Reaktionspunkte
0
Einen wunderschönen Guten Abend!

Ich hab da mal ein Problem. Ich möchte gerne eine systemweite Umgebungsvariable für einen Mac setzen.

Zur Zeit hab ich es nur für einen angemeldeten Benutzer hinbekommen. Ich hab dazu in der Konsole mkdir .macosx ausgeführt. Anschließend mit open .macosx diesen Ordner geöffnet und die Datei environment.plist erzeugt mit dem notwendigen Inhalt.

Diese Variable darin hab ich aber nur für den jeweiligen User verfügbar. Wie bekomm ich dass denn systemweit hin, das egal welcher User sich angemeldet hat diese Variable aktiv ist.
 
Versuch doch mal das Ganze im /etc Ordner durchzuführen.
Ich habe bisher noch nicht gesehen, dass man das woanders als im jeweiligen Benutzerordner macht.
Einen Versuch wäre es trotzdem Wert.

Ansonsten kannst Du noch den Ordner irgendwo zentral anlegen und in den Benutzerodnern einen symlink anlegen.
Dann kannst Du die Datei lokal pflegen, aber aus allen Accounts heraus verwenden.

HTH

Nachtrag:
Unter Tiger könntest Du noch mit einem LaunchAgent Skript arbeiten, um das selbe Ziel zu erreichen.
 
Zuletzt bearbeitet:
Boah ich hab da jezt echt das Problem, dass ich nicht weiß was du meinst.

Bin mit dem Mac's noch nicht so vertraut. Gibts da nicht eine Möglichkeit wie unter Windows mit einer einfachen Oberfläche :rolleyes:

Gibt es denn irgendwo so eine environment.plist die systemweit gilt? Oder einen einfachen Befehl den man in der Konsole eingibt und der die Variable setzt? Sowas muss es doch geben.
 
Zuletzt bearbeitet:
ev. hilft Dir das nachfolgende Beispiel weiter...

- Umgebungsvariablen bearbeiten:
Da sich die meisten UNIX Programme unter MacOS X nach "/usr/local/bin" resp. "/usr/local/sbin" installieren, ist es von Vorteil, resp. teilw. sogar notwendig die Umgebungsvariablen via Terminal zu erweitern (denn diese Pfade sind leider standardmässig nicht in den Umgebungsvariablen von MacOS X):

cd /
cd etc
sudo pico profile
- PATH für sh & bash erweitern (via pico Editor mit root Rechten):
PATH="/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin"

sudo pico csh.login
- PATH für csh & tcsh erweitern:
PATH="/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin"
Info: Diese Anpassungen werden bei einem neuen Terminal Login sofort aktiv.


- Umgebungsvariabeln im Terminal für csh & tcsh abfragen:
printenv

- Herausfinden aus welcher Umgebungsvariable das aufgerufene Programm stammt:
which <Programmname>


weitere Infos findest Du ev. auch noch hier:
http://www.omnigroup.com/mailman/archive/macosx-admin/2003-May/030469.html

Gruss
Roenz
 
Zuletzt bearbeitet von einem Moderator:
Littlered schrieb:
Boah ich hab da jezt echt das Problem, dass ich nicht weiß was du meinst.
...
Du operierst am offenen Herzen und weisst nicht was eine Arterie ist?
Das überrascht mich jetzt ehrlich gesagt ein wenig.
Da weiss ich auch gar nicht so recht, wo ich jetzt ansetzen soll.

Littlered schrieb:
...
Bin mit dem Mac's noch nicht so vertraut. Gibts da nicht eine Möglichkeit wie unter Windows mit einer einfachen Oberfläche :rolleyes:
...
Auah.
Littlered schrieb:
...
Gibt es denn irgendwo so eine environment.plist die systemweit gilt? Oder einen einfachen Befehl den man in der Konsole eingibt und der die Variable setzt? Sowas muss es doch geben....
Bei der von Dir eingesetzten Lösung, geht es darum die Umgebungsvariablen eines Users in allen Shells zu setzen.
Du verwendest vermutlich nur eine einzige Shell und möchtest, dass deren Umgebungsvariablen für alle Benutzer definierten werden.
Das geht, ist aber von der verwendeten Shell abhängig.
Daher jetzt die Frage: "Welche Shell verwendest Du?"
 
Aua das is ne schwierige Frage. Ich würde mal sagen die Standard Shell. Gesetzte Variablen kann ich über die tcsh mit set angucken. Nur mal zum vergleich: unter Windows hab ich ne vbs geschrieben, die einen Schlüssel in der Registry setzt so dass die Variable systemweit zur Verfügung steht nun suche ich vergleichbares für den Mac. Ich mein für den muss doch auch zwischen user-variablen und systemvariablen unterschieden werden oder nicht?
 
Littlered schrieb:
Aua das is ne schwierige Frage. Ich würde mal sagen die Standard Shell.
...
Das ist abhängig vom System, weil Apple da mehrmals gewechselt hat.
Wie lautet die Ausgaben von
echo $SHELL
?
Littlered schrieb:
...
Gesetzte Variablen kann ich über die tcsh mit set angucken. Nur mal zum vergleich: unter Windows hab ich ne vbs geschrieben, die einen Schlüssel in der Registry setzt
...
Auah. Und das nennst Du einfach?
Littlered schrieb:
...so dass die Variable systemweit zur Verfügung steht nun suche ich vergleichbares für den Mac. Ich mein für den muss doch auch zwischen user-variablen und systemvariablen unterschieden werden oder nicht?
Wenn Du die tcsh verwendest, solltest Du Dir mal den Inhalt von "/usr/share/tcsh/examples" (insbesondere das README) und "man tcsh" ansehen.
IIRC sind für die tcsh die Dateien /etc/csh.cshrc, /etc/csh.login, und /etc/csh.logout relevant.
Wenn Du eine andere Shell verwendest, findest du in der man-page auf jeden Fall auch entsprechende Hinweise.


HTH
 
Tja einfach ist immer Auslegunssache. Das Problem ist das über eine Softwareverteilung ca. 500 PC's so auf einen Schlag diese Variable gesetzt bekommen haben und das dauerhaft und nicht temporär an den User gebunden.

Gibt es denn bei den Macs ne Variante dass die immer beim Start sich diese Variable selbst erzeugen? Muss ja diese Datei environment.plist vorhanden sein oder?

Na wenns nicht anderes geht muss man eben alle Macs von Hand anpassen. Ist übrigens die Bash die standardmäßig aktiviert ist.
 
Also jetzt mal im Ernst Littlered;

wenn Du 500 Mac betreust, dann solltest Du Dir schon die Grundkenntnisse des Systems aneignen.
Der Versuch Windwos Lösung zu übersetzen geht mit Sicherheit in die Hose.
Das Anpassen von Hand ist ebenfalls kapitaler Schwachfug.

Dass Du die Anforderung hast hunderte von Rechner zu konfigurieren, ohne zu wissen welche Shell darauf läuft, hast Du bisher erfolgreich verheimlich.
Insofern ist die Fragestellung an sich schon falsch gewesen.

Für Deine Aufgabe gibt eine ganze Reihe von Lösungsansätzen, die nur unter Berücksichtigung der Geamtanforderungen ausgewählt werden können.
Welche für Dein Netz die richtige ist, kannst nur Du entscheiden, aber wie gesagt, dazu benötigst Du einige Grund- und Fachkenntnisse.
Die Lösung mit dem ~/.macosx-Ordner ist benutzerbezogen und hat lediglich das Ziel in allen Shells die selben Variablen gesetzt zu bekommen.
 
Nein ich betreue keine 500 Macs. Es sind Windows Rechner die ich so auf einen Schlag aktualisiert habe. Nun bin ich halt auf der Suche nach Anleitungen sowas irgendwie automatisiert auf Macs umzusetzen. Ich betreue auch diese Macs nicht. Die Macs sind in unserem Netzwerk nur einige Exoten aber eben weltweit verstreut. Die Macs werden auc über eine Softwareverteilung versorgt, daher wäre auch hier ein Skript gut welches diese systemweite Variable setzt.

Ich habe kaum Kenntnisse über Macs. Ich persönlich meide diese Dinger aus eben solchen Gründen. Kannst du mir Links empfehlen die vielleicht eine Lösung beschreiben?
 
In so einem Fall würde ich das vermutlich mit scp oder rsync lösen.
Auf den Zielrechnern muss dazu ssh Server (= Sharing > Entfernte Anmeldung) laufen.
Du schreibst eine profile Datei, in der alle Variablen gesetzt werden.
Die kopierst Du dann remote auf die verschiednen Rechner ins /etc Verzeichnis.

Du kannst Dir auch ein Skript schreiben, welches das für dich automatisch anhand einer IP-Adressen Liste erledigt.
Du solltest Dir aber klar darüber sein, dass der einzelne Benutzer auch "private" profiles erstellen kann. Das kann u. U. ein Problem darstellen, wenn die Leute nicht wissen was sie tun und dann jammern, das irgend etwas nicht funktioniert, wie erwartet.
 
Du meinst also wenn ich im Ordner /etc die Datei .profiles öffne kann ich darin über Variable="Wert" und export variable eine systemweite Variable setzen?

Ich hab ein wenig recherchiert und Folgendes gefunden:

In der tcsh kann man mit dem Befehl setenv auch eine Umgebungsvariable setzen. Ich hab das mal probiert und nach vorgeschriebener Syntax folgendes eingegeben:

setenv SNC_LIB=/Library/GSSAPI/sncgssk5.dyld

Er sagt mir immer Syntax Fehler aber so stehts im Beispiel angegeben.
 
Zuletzt bearbeitet:
Littlered schrieb:
Du meinst also wenn ich im Ordner /etc die Datei .profiles öffne kann ich darin über Variable="Wert" und export variable eine systemweite Variable setzen?
Die Datei in /etc heisst profile ohne Punkt
Littlered schrieb:
...
In der tcsh kann man mit dem Befehl setenv auch eine Umgebungsvariable setzen. Ich hab das mal probiert und nach vorgeschriebener Syntax folgendes eingegeben:

setenv SNC_LIB=/Library/GSSAPI/sncgssk5.dyld

Er sagt mir immer Syntax Fehler aber so stehts im Beispiel angegeben.
Dis Syntax ist:
setenv variable wert

Aber ich dachte, ihr verwendet die bash.
Schon mal einen Blick in die manpage geworfen?
Unter dem Abschnitt "INVOCATION" solltest du alle Fragen beantwortet finden.

Irgendwie hab ich dein Eindruck, dass Du selber nicht so recht weisst, was Du eingentlich willst.

Was ist denn eigentlich der Hintergrund dieser Variablensetzerei?
Vielleicht kommen wir so weiter.
 
Zurück
Oben Unten