[linux-l] Logik von "Syntax-Fehler" in Bash

Michael Gisbers m.gisbers at linux-schmie.de
Fr Dez 27 19:18:05 CET 2013


On Fri, 27 Dec 2013 16:17:54 +0100
Hauke Laging <mailinglisten at hauke-laging.de> wrote:

> Am Fr 27.12.2013, 15:32:44 schrieb Hasko Bern:
> > Also beide folgenden Ansätze funktionieren:
> > 
> > $ sudo bash -c 'for i in 1 2 3 4 5; do hdparm -tT /dev/sda; done'
> 
> > - Der Befehl hdparm ist im Suchpfad eines "normalen" Benutzers
> 
> Meine Variante hat den Vorteil, dass sowieso der PATH von root
> genommen wird, weil bash den beim Start entsprechend setzt.

Hallo Hauke,

da muss ich Dir leider widersprechen. Solange Du keine Login-Shell
nutzt (bash -l) wird der Pfad des Benutzers behalten, da die
Profilscripte nicht abgearbeitet werden sondern nur die ~/.bashrc (man
bash -> INVOCATION).

Das mag bei einigen Distributionen klappen, die in der ~/.bashrc die
PATH - Variable setzen, aber ansonsten geht das schief:

# Test des lokalen Pfads:
mgisbers at jupiter ~ $ echo $PATH
/home/mgisbers/perl5/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/vendor_perl:/usr/bin/core_perl:/home/mgisbers/.gem/ruby/2.0.0/bin

# Test mit sudo:
mgisbers at jupiter ~ $ sudo bash -c 'echo $PATH'
/home/mgisbers/perl5/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/vendor_perl:/usr/bin/core_perl:/home/mgisbers/.gem/ruby/2.0.0/bin

# Test mit sudo und Login-Shell:
mgisbers at jupiter ~ $ sudo bash -l -c 'echo $PATH'
/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/vendor_perl:/usr/bin/core_perl

Wie zu sehen wird erst mit dem Parameter '-l' der Pfad auf den für den
User root gültigen Pfad umgesetzt.

Und das gilt nicht nur für die Variable PATH, sondern auch für andere
Parameter, die über die profile-Skripte gesteuert werden.

-- 
 Mit freundlichem Gruß,

 Linux-Schmie.de

 Michael Gisbers

 Neukölner Str. 94
 46147 Oberhausen
 Telefon: +49 208 628 950
 Telefax: +49 208 628 951
 Mobil: +49 173 510 68 22
 http://linux-schmie.de
 USt-IdNr. DE 189 020 052
-------------- nächster Teil --------------
Ein Dateianhang mit Binärdaten wurde abgetrennt...
Dateiname   : signature.asc
Dateityp    : application/pgp-signature
Dateigröße  : 198 bytes
Beschreibung: nicht verfügbar
URL         : <https://mlists.in-berlin.de/pipermail/linux-l-mlists.in-berlin.de/attachments/20131227/a3a1c2ff/attachment.sig>


Mehr Informationen über die Mailingliste linux-l