Kommando in PATH wird mit sudo nicht gefunden
Christoph Bier
christoph.bier at web.de
Fre Jul 27 08:09:40 BST 2007
Nils Kassube schrieb am 26.07.2007 20:07:
> Christoph Bier wrote:
>> Nils Kassube schrieb am 26.07.2007 17:08:
[...]
>> chris at bzb:~$ sudo sh -c 'echo $PATH'
>> Password:
>> /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:
>> /sbin:/bin:/usr/X11R6/bin
>>
>> Treffer! Aber wie kommt dann das zustande?:
>>
>> $ su -
>> Password:
>> root at bzb:~# echo $PATH
>> /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:
>> /bin:/usr/bin/X11:/usr/local/texlive/2007/bin/i386-linux
>
> Es ist für die Shell ein Unterschied, ob sie interaktiv aufgerufen wird
> oder nicht. Davon abhängig werden unterschiedliche
> Initialisierungsdateien aufgerufen. Eine interkative shell startet eine
> der folgenden Dateien ~/.bash_profile oder ~/.bash_login
> oder /etc/profile je nachdem, welche in dieser Reihenfolge zuerst
> gefunden wird. Ist es dagegen eine Subshell, wie über den befehl sudo,
> wird statt dessen ~/.bashrc gelesen. Ich vermute mal,
> dass /usr/local/texlive/2007/bin/i386-linux nur in einer der 3 zuerst
> genannten Dateien steht, nicht aber in ~/.bashrc. Wenn du das überprüfen
> willst, denke bitte daran, dass es sich hierbei um /root als
> Homeverzeichnis für root gilt.
Danke für die Erläuterung! Aber doch
/usr/local/texlive/2007/bin/i386-linux habe ich höchstpersönlich in
/root/.bashrc eingetragen.
$ tail -3 /root/.bashrc
# TeXLive 2007 zum Pfad hinzufügen:
PATH=$PATH:/usr/local/texlive/2007/bin/i386-linux
export PATH
Ansonsten gibt es nur profile (und bash_history) in /root.
>> Und wie komme ich mit sudo an Shell-Funktionen?
>
> sudo sh -c 'Befehl'
>
> Aber vorher solltest du überlegen, ob das sinnvoll ist. Wenn man z.B. eine
> Umgebungsvariable der Subshell verändert, klappt das schon. Aber beim
> nächsten Aufruf ist die Umgebungsvariable wieder verschwunden, denn man
> bekommt eine neue Subshell.
>
> Anderes Beispiel: Die Befehlsfolge
>
> sudo sh -c 'cd /'
> sudo sh -c 'echo *'
>
> hat nicht unbedingt den erwarteten Effekt -- es wird nicht der Inhalt
> von / aufgelistet, sondern der des aktuellen Verzeichnisses beim Aufruf
> von sudo. Hier müsste man statt dessen schreiben:
>
> sudo sh -c 'cd /;echo *'
>
> Das Beispiel diente natürlich nur zur Demonstration, denn man benötigt ja
> keine root-Rechte, um / aufzulisten.
Auch hierfür danke!
Grüße
Christoph
--
+++ Typografie-Regeln: http://zvisionwelt.de/downloads.html (1.6)