# Probleme beim setzten einer Umgebungsvariablen



## Hawkings (12. Juni 2007)

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  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 

```
vi .bash_profile
```
komme ich in den Texteditor und kann das Bash-File bearbeiten...

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


```
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?!


```
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...

gruß aus Ka


----------



## andy72 (12. Juni 2007)

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:

```
MeineVariable = "hallo"
echo $MeineVariable
```
gibt dann aus "hallo"

Willst Du eine Anwendung mit einer Variable starten, solltest Du lieber einen Alias verwenden:

```
alias dir 'ls'
```
damit funktioniert dein gewohnter WinBefehl auch unter Linux

Du kannst eine Anwendung aber auch in einer Variablen speichern:

```
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


----------



## Hawkings (12. Juni 2007)

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


```
alias initdb="/usr/local/pgsql/bin/initdb"
```

dann könnte ich anstelle von

```
/usr/local/pgsql/bin/initdb ....
```
einfach das schreiben

```
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?!:

```
PGDATA=/usr/local/pgsql/data
export $PGDATA
```

stimmt das, oder noch etwas anders?

P.S.: Danke schonmal für die 1. ausführliche Antwort!


----------



## andy72 (12. Juni 2007)

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:

```
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:

```
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"


----------



## deepthroat (12. Juni 2007)

Hi.





andy72 hat gesagt.:


> # 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?!:
> 
> ```
> PGDATA=/usr/local/pgsql/data
> ...


Nicht ganz. So: 
	
	
	



```
PGDATA=/usr/local/pgsql/data
export PGDATA # ohne Dollarzeichen
```
Gruß


----------

