Probleme beim setzten einer Umgebungsvariablen

Hawkings

Erfahrenes Mitglied
Hi@all,

ich habe wieder ein Problem, und zwar möchte ich bei einer Datenbankinstallation nicht immer diese vollständigen Pfade angeben, und das mithilfe der Umgebungsvariablen abkürzen.

Habe schon etwas gegooglet und im Forum gesucht :google: etc., aber immer nur noch mehr verwirrt...

bspw.

Was für eine Variable muss ich z.Bleistift an den Anfang setzten, Path oder was weiß ich?

Ich habe mich an eine SN gehalten und dabei folgendes ausprobiert für redhat Fedora...
/usr/local/pgsql/bin/initdb --locale=... -D /usr/local/pgsql/data
oder, falls der Pfad schon angepasst wurde und $PGDATA gesetzt wurde
initdb --locale=... -D $PGDATA

Also sind doch eigentlich initdb und $PGADATA Umgebungsvariablen, aber initdb aht kein $ davor ?

Wie setzte ich die richtig?

Also mit dem Befehl
Code:
vi .bash_profile
komme ich in den Texteditor und kann das Bash-File bearbeiten...

ich habe auch schon eine eingetragen, und zwar folgendermaßen:

Code:
PATH=/usr/local/pgsql/bin:$PATH
export PATH

Dazu weitere Fragen:
Kann ich bei jedem setzten einer Umgebungsvariablen das "PATH" davorsetzten, aber es gibt ja noch andere Variablen, bspw. rootpath etc.

würde auch bspw. das gehen?!

Code:
PATH=/usr/local/pgsql/data:$PGDATA
export PATH //oder PGDATA!

Bitte helt mir mal weiter, ich habe keine ahnung mehr, sieht man denke ich auch an den geschreibsel...:(:confused:

gruß aus Ka
 
Hi,

grundsätzlich sind Umgebungsvariablen unter Linux/Unix nix anderes als im gewohnten Windows.
Du kannst als Umgebungsvariable allen Text setzen, der Dir einfällt, und Du kannst auch überall einen Pfad (Path) davor setzen, wenn Du das in der Variablen brauchst (macht aber keinen wirklichen Sinn, den Pfad in eine weitere Variable zu integrieren/hinzuzufügen)

zB so:
Code:
MeineVariable = "hallo"
echo $MeineVariable
gibt dann aus "hallo"

Willst Du eine Anwendung mit einer Variable starten, solltest Du lieber einen Alias verwenden:
Code:
alias dir 'ls'
damit funktioniert dein gewohnter WinBefehl auch unter Linux

Du kannst eine Anwendung aber auch in einer Variablen speichern:
Code:
MyVariable = 'ls -l'
exec $MyVariable

Beachte dabei aber, dass einige Dinge nur in einem Shell-Script der Bash funktionieren.
Es gibt unter Linux mehrere shells, die auch unterschiedlich arbeiten und u.U. Deine Scripte nicht verstehen/verarbeiten können.

LG
Andy
 
ok, das klingt schon alles einleuchtend, habs auch verstanden, aber...

ich muss diese Umegebungsvariable setzten...

das initdb kann also hiermit als alias laufen

also im Prinzip, berichtige mich bitte, so

Code:
alias initdb="/usr/local/pgsql/bin/initdb"

dann könnte ich anstelle von
Code:
/usr/local/pgsql/bin/initdb ....
einfach das schreiben
Code:
initdb ....

ist das soweit korrekt?

Als nächstes zu der Umgebungsvariable:

Das war ein Ergebnis der Internetrecherche:
PATH Diese Variable enthält eine durch Doppelpunkte getrennte Liste von Verzeichnissen, in denen Ihr System nach ausführbaren Dateien schaut. Wenn Sie den Namen einer ausführbaren Datei, wie zum Beispiel ls, rc-update oder emerge eingeben und sich diese Datei nicht in einem der Verzeichnisse dieser Liste befindet, wird sie nicht ausgeführt, es sei denn, Sie geben den vollständigen Pfad an (z.B. /bin/ls).

Also etwa so?!:
Code:
PGDATA=/usr/local/pgsql/data
export $PGDATA

stimmt das, oder noch etwas anders?

P.S.: Danke schonmal für die 1. ausführliche Antwort!
 
Deine Variable PGDATA ist ja das DB-Verz. vom PostgreSQL, die Anwendung selbst liegt ja vermutlich in /usr/local/pqsql/bin.

Dazu hast Du jetzt folgende Möglichkeiten, das in der ~/.bash_profile umzuschreiben:

Variante 1:
Code:
export PATH=$PATH:/usr/local/pgsql/bin
damit erweiterst Du den System-Pfad um ein weiteres Verzeichnis, ABER: dieser Pfad gilt NUR bei dem jeweilig angemeldet User. Um das Systemweit zu machen, musst Du dazu die Path-Variable in /etc/profile ändern.

Variante 2:
Du exportierst die Anwendung pgsql in eine Variable, auch hier gilt dasselbe mit der ~/.bash_profile:
Code:
export PGSQL='/usr/local/pgsql/bin/pgsql'

ABER: System-technisch macht man das eher nicht so, da das zu umständlich ist.
Bleibe dabei, den Pfad zu erweitern, so ersparst Du Dir nur unnötigen Ärger ;)

# EDIT:
Die Nutzung von alias ist nicht korrekt,wie du das schreibst.
Die Syntax von alias ist "alias Dein_neuer_name Dein_Name_der_Anwendung"
 
Zuletzt bearbeitet:
Hi.
# EDIT:
Die Nutzung von alias ist nicht korrekt,wie du das schreibst.
Die Syntax von alias ist "alias Dein_neuer_name Dein_Name_der_Anwendung"
Das kommt auf die verwendete Shell an. Standardmäßig ist Bash die Shell unter Linux und da ist die Syntax "alias <aliasname>=<definition>" schon ganz korrekt.

Also etwa so?!:
Code:
PGDATA=/usr/local/pgsql/data
export $PGDATA
Nicht ganz. So:
Bash:
PGDATA=/usr/local/pgsql/data
export PGDATA # ohne Dollarzeichen
Gruß
 
Zurück