• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

Systemvariablen hinzufügen

Hi Forum,
it's me again! :irre:

Folgendes Project ist immer noch nicht abgeschlossen:

Aculab Prosody (PRI) Karte in Zusammenhang mit Asterisk zum laufen zu bekommen.

Es müssen Systemvariablen hinzugefügt werden damit die Sache funktioniert. Hierfür hat der Hersteller ein Script geschrieben das, wenn ich es manuell ausführe, auch geschieht.

Auszug aus der readme:
ACULAB_ROOT must be set to the root directory of the Aculab distribution
(eg, /home/aculab/v6). setV6.sh is a script that will set all of the
environment variables correctly. To run:

source setV6.sh

nachdem ich das Script ausgeführt habe bekomme ich die beiden neuen Variablen $ACULAB_ROOT und $LD_LIBRARY_PATH

das hier ist das script setV6.sh:
Code:
ACULAB_ROOT=`pwd`
export ACULAB_ROOT
if [ "" != "${LD_LIBRARY_PATH}" ]; then
   LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:${ACULAB_ROOT}/lib
else
   LD_LIBRARY_PATH=${ACULAB_ROOT}/lib
fi
export LD_LIBRARY_PATH
TiNGTYPE=LINUX
export TiNGTYPE
PATH=${PATH}:${ACULAB_ROOT}/bin
export PATH
if [ -d TiNG ]; then
   if [ ! -h ting ]; then
      ln -s TiNG ting
   fi
fi

Auszug aus der readme:
This file may also be modified and copied into /etc/profile.d to ensure
settings are loaded for each bash shell.
Wie muss ich das anstellen das dieses script automatisch geladen wird? wenn ich es einfach dort hinein verlinke klappts nicht. Es muss irgendwie mit dem befehl "source" gestartet werden. Oder bin ich auf dem Holzweg? Jemand eine Idee?
 
Es muss irgendwie mit dem befehl "source" gestartet werden.
Das ist richtig: "source" führt ein Skript so aus, als würde man es direkt in die Konsole eintippen.

Du könntest das Skript z.B. in "/usr/local/bin" abspeichern, und in "/etc/profile.local", vielleicht auch "~/.bashrc", eine Zeile
Code:
source /usr/local/bin/setV6.sh
eintragen.

Gruß

P.S: "/etc/profile.d" ist ja ein Verzeichnis. Genügt es nicht, das Skript dorthin wie angegeben zu kopieren ?
 
:eek:ps:
abgdf,

danke für den tip.
P.S: "/etc/profile.d" ist ja ein Verzeichnis. Genügt es nicht, das Skript dorthin wie angegeben zu kopieren ?

das es jetzt so einfach war ist mir schon ein bischen peinlich.

Danke trotzdem!
 
ahhhh! zu früh gefreut.

Wenn ich das script ins Verzeochnis /etc/profile.d/ kopiere bekomme ich zwar die variablen angezeigt

( $ und dann 2 mal die TAB taste )

aber ich kann meinen treiber nicht starten. führe ich das script "händisch" im Verzeichnis /usr/local/aculab/ mit root@trixbox1#source setV6.sh aus ist es so wie es sein soll. anschließend treiber starten, alles schick.

Ausserdem habe ich versucht eine Datei zu erstellen mit folgendem inhalt
Code:
source /usr/local/aculab/setV6.sh
und habe sie ausführbar gemacht.

es ist zum :(
 
Sie dir mal die erste Zeile im Script an!
  • ACULAB_ROOT=`pwd
Ich würde in der Version die in /etc/profile.d liegt, den Pfad fest setzen. Also ändern in
  • ACULAB_ROOT= /usr/local/aculab
 
A

Anonymous

Gast
TOBI-- schrieb:
ausserdem habe ich versucht eine Datei zu erstellen mit folgendem inhalt
Code:
source /usr/local/aculab/setV6.sh
und habe sie ausführbar gemacht.
(

Das kann nicht gehen. Variablen können nicht an die aufgerufene Shell zurückgegeben werden, also darf zum Ausführen des Scriptes keine neue Shell aufgemacht werden sondern das Script in der aktuellen Shell ausgeführt werden.
also entweder aus der Shell direkt mit Vorschaltkommando source
Code:
source /usr/local/aculab/setV6.sh
oder noch einfacher mit Punkt Leerzeichen Script (Script braucht dazu nicht mal Ausführungsrechte zu haben)
Code:
. /usr/local/aculab/setV6.sh

So wie du es oben machen willst, legst diese Zeile wiederum in ein eigenes Script und startest dieses, damit machst du das alles wieder zu nichte, da das Ganze dann wiederum schon wieder in einer neuen Shell ausgeführt wird.


Die Idee das Script nach /etc/profile.d/ zu verschieben/kopieren ist wohl das Beste, nur wie Tooltime schon geschrieben hat, muss dann die Variabel ACULAB_ROOT umgeschrieben werden.


die /etc/profile startet übrigens die Scripte in /etc/profile.d auch nur mit Punkt Leerzeichen Script ;) ;) ;)
/etc/profile schrieb:
if test -d /etc/profile.d -a -z "$PROFILEREAD" ; then
for s in /etc/profile.d/*.sh ; do
test -r $s && . $s
done
unset s
fi


robi
 
Eigentlich hatte ich Dir oben noch einen anderen Hinweis gegeben, als in "/etc/profile.d" zu kopieren ...
 
:up: yes! Result!

also ich habe es nun so gemacht das ich ein Start Script geschrieben. Wie vorgeschlagen :
Code:
. /usr/local/aculab/setV6.sh
mit namen start-setV6.sh und habe es ausführbar gemacht und es in /etc/profile.d/ geparkt.

Jetzt klappts und ich kann ein Problem von meiner todo Liste streichen.

Danke an alle beteiligten!

....und bis später.... bis zur nächsten Hürde.....
 
:???:
also, es hat "ein bischen" geklappt.

Doch das script zu modifizieren war dann doch der 100% richtige weg.

Also :
Versuch nr. 1 schlug fehl, daraufhin habe ich meinen letzten Forenbeitrag geschrieben.
Versuch nr. 2 geht nun wirklich. "blödes Leerzeichen!"
versuch1:
Code:
ACULAB_ROOT= /usr/local/aculab
versuch2:
Code:
ACULAB_ROOT=/usr/local/aculab
 
Es dauert am Anfang etwas, bis man versteht, warum die Shell etwas so macht, wie sie es tut.
Mit Leereichen würde das "Befehl Option" bedeuten, nur ohne Leereichen und mit Gleichheitszeichen bedeutet das Zuweisung "Variablenname=Variablenwert".

Andere Sprachen (C, Perl, Python) können da etwas großzügiger sein.

Gruß
 
Oben