# $PATH weicht  bei Gentoo vom Standard ab?

## andreask

Hallo!

Ich habe mir sagen lassen, dass der $PATH in der Shell bei Gentoo vom Standard abweicht.

als normaler User habe ich folgenden $PATH: 

```
/bin:/usr/bin:/usr/local/bin:/opt/bin:/usr/i686-pc-linux-gnu/gcc-bin/3.3
```

der Standard ist aber :

```
/usr/local/bin:/usr/bin:/bin
```

Das ist auch der Grund meines Problems bzgl. des svnserve Wrappers: https://forums.gentoo.org/viewtopic-t-305481.html

Woher kommt das? Kann ich $PATH ohne Probleme befürchten zu müssen auf den Standard-$PATH umstellen?

Grüße

Andreas

----------

## moocha

Was heisst da, "Standard"? Welcher Standard, wo denn?

Es gibt keinen "Standard", der einen bestimmten PATH festlegt. Es mag vielleicht typische Faelle order allgemeine Praktiken geben, aber Standard, nee. Entweder hat die Person, die Dir das erzaehlt hat, keine Ahnung, vowon sie/er redet, oder aber hasst Du etwas missverstanden, und die entsprechende Person meinte den Default-Wert fuer PATH so wie er in irgendeiner Distribution in /etc/profile steht.

Jedwelches Konto kann zu jedwelchem Zeitpunkt jedwelchen PATH benutzen. Sollte in .bashrc gesetzt werden.

----------

## pablo_supertux

 *andreask wrote:*   

> Hallo!
> 
> Ich habe mir sagen lassen, dass der $PATH in der Shell bei Gentoo vom Standard abweicht.
> 
> 

 

da hat dich jemand verarscht. "Standard" gibt's da keinen, die meisten Programmen laufen zwar von /bin oder /usr/bin aber das ist nicht die Regel und vor allem bei Systemen wie gentoo kann man das immer ändern, wenn man will. Und du kannst auch deine PATH Variablen jeder zeit ändern, wie du es wünscht. Noch nie mal von .bashrc oder /etc/profile gehört?

edit: Bis heute musste ich noch nie mit Gentoo meine PATH Variable ändern

```

rex@supertux:~> echo $PATH 

/bin:/usr/bin:/usr/local/bin:/opt/bin:/usr/i686-pc-linux-gnu/gcc-bin/3.3.5:/usr/i486-pc-linux-gnu/gcc-bin/3.3:\

/opt/Acrobat5:/usr/X11R6/bin:/opt/blackdown-jdk-1.4.2.01/bin:/opt/blackdown-jdk-1.4.2.01/jre/bin:/usr/qt/3/bin:\

/usr/kde/3.3/bin:/usr/games/bin

```

Und wie du siehst "/usr/local/bin:/usr/bin:/bin" ist dort enthalten.

mod edit: Langen Pfad umgebrochen. Bitte in Zukunft selbst machen --Earthwings

----------

## andreask

 *pablo_supertux wrote:*   

> Noch nie mal von .bashrc oder /etc/profile gehört?

 

natürlich. Mir geht es nicht darum wie man es anpasst.

 *pablo_supertux wrote:*   

> 
> 
> ```
> 
> rex@supertux:~> echo $PATH 
> ...

 

Eben nicht! Wenn das so (in der Reihenfolge) in $PATH stünde, könnte ich genau das machen was das Subversion-Buch und das Gentoo-Ebuild für subversion vorschlagen:

Lege ein Wrapper-Script für /usr/bin/svnserve in /usr/local/bin, damit das Wrapper-Script eine spezielle umask für /usr/bin/svnserve setzen kann.

Wenn man die Reihenfolge des gemäß `man bash` "common value"  ``/usr/gnu/bin:/usr/local/bin:/usr/ucb:/bin:/usr/bin:.''. verwenden würde, dann würde das genau wie beschrieben funktionieren. Ich könnte jederzeit per emerge subversion aktualisieren, ohne dass dies Einfluss auf das Wrapper-Script hätte. 

Wenn ich aber $PATH so wie es standardmäßig von Gentoo eingerichtet wird verwende, geht das eben nicht. Da hier (anders als beim "Standard") /usr/bin vor /usr/local/bin steht, wird das Wrapper-Script in /usr/local/bin niemals aufgerufen. Das hat dann zufolge, dass ich svnserve nicht einfach in /usr/bin lassen kann, wodurch ich Probleme mit Updates per emerge bekomme. 

Die Frage geht halt dahin, ob es einen speziellen Grund gibt warum Gentoo halt vom "common value" abweicht, und ob ich die Reihenfolge hier bedenkenlos umdrehen kann.

mod edit: Langen Pfad umgebrochen. Bitte in Zukunft selbst machen --Earthwings

----------

## moocha

 *andreask wrote:*   

> Die Frage geht halt dahin, ob es einen speziellen Grund gibt warum Gentoo halt vom "common value" abweicht, und ob ich die Reihenfolge hier bedenkenlos umdrehen kann.

 

Noch einmal: Es gibt kein "common value". Viele Distros benutzen die System-bins vor dem Lokal-bin, und Gentoo ist eine von ihnen.

Der Grund ist einfach - Sicherheit und Stabilitaet. In /usr/local landet theorethisch alles, was der User so ausserhalb der ebuild-Systems ruminstalliert, und das kann zu Hopplas fuehren, wenn z.B. der Name eines von diesen Programmen mit dem eines System-Programms identisch ist. Nicht gut.

Du kannst die Reihenfolge nach Belieben veraendern, aber /usr/local vor /usr und / heisst groesseres Sicherheits- und Stablitaets-Risiko. Deshalb solltest du den Wert von PATH nicht systemweit aendern, sondern nur fuer den entsprechenden User (oder daemon), der den Wrapper benutzt.

In dem von Dir genannted Subversion ebuild Fall ist dies ganz klar ein Bug im ebuild - es sollte vorschlagen, .bashrc zu aendern oder absolute Pathnamen zu benutzen.

----------

## psyqil

 *moocha wrote:*   

> Viele Distros benutzen die System-bins vor dem Lokal-bin, und Gentoo ist eine von ihnen.

 Ähhh, sorry... hier nicht:

```
psyqil ~$ echo $PATH

/usr/kde/3.4/bin:/usr/local/bin:/usr/bin:/bin:/opt/bin:/usr/i686-pc-linux-gnu/gcc-bin/3.4.3-20050110:\

/usr/i386-pc-linux-gnu/gcc-bin/3.3:/opt/blackdown-jdk-1.4.2.01/bin:/opt/blackdown-jdk-1.4.2.01/jre/bin:\

/usr/qt/3/bin:/usr/kde/3.4/bin

psyqil ~$ sudo cp /usr/bin/cp /usr/local/bin/cp

psyqil ~$ which cp

/usr/local/bin/cp
```

 mod edit: Auch diesen langen Pfad umgebrochen *sigh* --Earthwings

----------

## andreask

 *moocha wrote:*   

> Noch einmal: Es gibt kein "common value".

 

Ja, deshalb habe ich es in Anführungszeichen gesetzt. Der Begriff common value stand in man bash. 

 *moocha wrote:*   

> Deshalb solltest du den Wert von PATH nicht systemweit aendern, sondern nur fuer den entsprechenden User (oder daemon), der den Wrapper benutzt.

 

Ok, wäre dann für eine Gruppe, muss dann wohl in jeder betroffenen .bashrc geändert werden.

 *moocha wrote:*   

> In dem von Dir genannted Subversion ebuild Fall ist dies ganz klar ein Bug im ebuild - es sollte vorschlagen, .bashrc zu aendern oder absolute Pathnamen zu benutzen.

 

Absoluter Pfadname wäre schön, aber ich sehe nicht wo man das einstellen könnte. Das Wrapper-Script wird ja nur benötigt, wenn man svn von remote über SSH getunnelt aufruft (svn+ssh://). Das heißt, jeder User der dies nutzen soll muss entsprechendes in seiner .bashrc geändert bekommen. Irgendwie nicht die ideale Lösung. Aber mir fällt auch keine bessere ein, außer das Wrapper-Script in /bin zu legen, oder sollte man das besser nicht machen?

----------

## Joe User

 *moocha wrote:*   

> Viele Distros benutzen die System-bins vor dem Lokal-bin, und Gentoo ist eine von ihnen.

 

Gentoo 2004.3:

```

rescue ~ # useradd joeuser -m -k /etc/skel -g users -G wheel,tty,cron,portage -d /home/joeuser -s /bin/bash

rescue ~ # su - joeuser

joeuser@rescue ~ $ echo $PATH

/usr/local/bin:/usr/bin:/bin:/opt/bin:/usr/i686-pc-linux-gnu/gcc-bin/3.4.3-20050110

joeuser@rescue ~ $

```

 :Question: 

----------

## moocha

 *andreask wrote:*   

> Irgendwie nicht die ideale Lösung. Aber mir fällt auch keine bessere ein, außer das Wrapper-Script in /bin zu legen, oder sollte man das besser nicht machen?

 

Ganz einfach, durch ein PAM-Modul...

----------

## pablo_supertux

Hey Leute, wir können uns darüber stundenlang streiten, Fakt ist, das bringt nichts. ich wette, jeder hier hat eine andere PATH Variable und eine andere Reihenfolge.

@andreask: Fakt ist, es gibt weder ein Standard noch ein "common value" und du kannst jede Reihenfolge wählen, die du willst.

----------

## ChrisM87

Hi,

ich hab mir ohnehin angewöhnt, nur noch absolute Pfade zu verwenden. Eigentlich gibt es dazu keinen allzu großen Grund, aber man weiß halt genau, was man jetzt ausführt (v.a. als root) und geht kein Risiko ein.

Wieder ein anderes Thema wäre der LHS, aber dass Gentoo diesen an mehr als einer Stelle missachtet, ist ja bekannt.

ChrisM

----------

## moocha

Falls Du den FHS (Filesystem Hierarchy Standard) meinst, da wird kein Woertchen von dem Suchpfad erwaehnt.

----------

## pablo_supertux

 *ChrisM87 wrote:*   

> Hi,
> 
> ich hab mir ohnehin angewöhnt, nur noch absolute Pfade zu verwenden. Eigentlich gibt es dazu keinen allzu großen Grund, aber man weiß halt genau, was man jetzt ausführt (v.a. als root) und geht kein Risiko ein.
> 
> 

 

schon mal vom which gehört?

----------

## c07

In man bash heißt es "A common value is ...". Das beschreibt sicher keinen Standard. Sicherheitstechnisch hat es Vorteile, wenn lokale Pfade weiter hinten stehn (wie es üblicherweise auch mit . gemacht wird, wenn man es im Pfad hat), praktisch dagegen eher Nachteile. Die Abwägung ist sicher Geschmackssache.

Das Problem ist aber, dass man den Pfad in Gentoo (zumindest bei älterem Baselayout) nicht vernünftig ändern kann. /usr/local/bin steht in /etc/env.d/00basic , und /etc/env.d ist für den Benutzer tabu (lässt sich auch durch CONFIG_PROTECT nicht schützen). Immerhin lässt sich ein zweites /usr/local/bin in /etc/profile an den Anfang von PATH setzen.

----------

