hi,
auf die Art bricht das Script nach einem Fehler sofort komplett ab. Gerade rc.local ist doch aber ein Script, in dem schon mal mehrere, völlig unabhängige Befehle stehen. Wenn jetzt ein Fehler passiert, ist der Schaden doch viel größer, als ohne "set -e".
Kennt jemand den wahren Grund?
warum steht "set -e" in /etc/rc.local?
warum steht "set -e" in /etc/rc.local?
Beware of programmers who carry screwdrivers.
Re: warum steht "set -e" in /etc/rc.local?
lenny:
/etc/init.d/rc.local : ruft nur /etc/rc.local auf
/etc/rc.local : 'exit 0'
'set -e' hast Du selbst eingefügt?'
/etc/init.d/rc.local : ruft nur /etc/rc.local auf
/etc/rc.local : 'exit 0'
'set -e' hast Du selbst eingefügt?'
mfg rendegast
-----------------------
Viel Eifer, viel Irrtum; weniger Eifer, weniger Irrtum; kein Eifer, kein Irrtum.
(Lin Yutang "Moment in Peking")
-----------------------
Viel Eifer, viel Irrtum; weniger Eifer, weniger Irrtum; kein Eifer, kein Irrtum.
(Lin Yutang "Moment in Peking")
Re: warum steht "set -e" in /etc/rc.local?
hi,

rc.local wird vom postinst-Script vom Paket initscripts so erzeugt:
Na gut, statt "set -e" steht das "-e" als Option in der ersten Zeile, aber die Wirkung sollte doch die gleiche sein. Und ja, mir geht's um Lenny. Dein rc.local ist evt. schon älter, es wird ja nicht überschrieben.
sehr gute Frage, sowas passiert mir durchaus gelegentlich, aber diesmal nichtrendegast hat geschrieben:'set -e' hast Du selbst eingefügt?'

rc.local wird vom postinst-Script vom Paket initscripts so erzeugt:
Code: Alles auswählen
# Create /etc/rc.local on first time install and when upgrading from
# versions before "2.86.ds1-16"
#
if dpkg --compare-versions "$PREV_VER" lt "2.86.ds1-16"
then
if [ ! -e /etc/rc.local ]; then
cat << EOF > /etc/rc.local
#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.
exit 0
EOF
Beware of programmers who carry screwdrivers.
Re: warum steht "set -e" in /etc/rc.local?
Hab ich glatt übersehen.cosmac hat geschrieben:steht das "-e" als Option in der ersten Zeile
Nur das hier aus dem changelog.DEBIAN sysvinit|initscripts :
bzw....
sysvinit (2.86.ds1-16) unstable; urgency=low
...
* Add rc.local support to be more compatible with non-Debian
distributions. Patch from Fabio M. Di Nitto via Ubuntu. Modified to
not print messages when VERBOSE=no.
...
...
sysvinit (2.86.ds1-6ubuntu19) dapper; urgency=low
* Add /etc/rc.local support.
-- Fabio M. Di Nitto <fabbione@ubuntu.com> Thu, 16 Mar 2006 08:38:02 +0100
...
mfg rendegast
-----------------------
Viel Eifer, viel Irrtum; weniger Eifer, weniger Irrtum; kein Eifer, kein Irrtum.
(Lin Yutang "Moment in Peking")
-----------------------
Viel Eifer, viel Irrtum; weniger Eifer, weniger Irrtum; kein Eifer, kein Irrtum.
(Lin Yutang "Moment in Peking")
Re: warum steht "set -e" in /etc/rc.local?
Danke für die Antworten. Den Abschnitt im Changelog hatte ich auch gesehen, aber das "via Ubuntu" nicht beachtet. Das reicht ja fast als Erklärung, die "Konkurenz" hat ja andere Prioritäten 

Beware of programmers who carry screwdrivers.
Re: warum steht "set -e" in /etc/rc.local?
Mit "/bin/sh -e" gibt es aber auch andere Skripte,
udev, module-init-tools, networking, acpid, sysfsutils, ...
udev, module-init-tools, networking, acpid, sysfsutils, ...
mfg rendegast
-----------------------
Viel Eifer, viel Irrtum; weniger Eifer, weniger Irrtum; kein Eifer, kein Irrtum.
(Lin Yutang "Moment in Peking")
-----------------------
Viel Eifer, viel Irrtum; weniger Eifer, weniger Irrtum; kein Eifer, kein Irrtum.
(Lin Yutang "Moment in Peking")
Re: warum steht "set -e" in /etc/rc.local?
na klar, aber dabei hat jedes Script genau eine spezielle Aufgabe. Wenn da gleich am Anfang ein Fehler auftritt, wird der Rest sowieso schiefgehen (wenn der Fehler gezielt behandelt wird, greift "set -e" ja nicht). In rc.local schreibt man ggf. völlig unabhängige Befehle rein, das ist doch ein Unterschied.
Beware of programmers who carry screwdrivers.
Re: warum steht "set -e" in /etc/rc.local?
Dann häng halt an deinen Kommandos ein "|| true" an, wenn du dir sicher bist, das du einen nagativen Rückgabewert ignorieren willst. Im Allgemeinen ist es halt immer guter Stil mögliche Fehler explizit zu behandeln und ansonsten abzubrechen.
Formerly known as Trigger.
HP 8510p - Debian Sid
Mitglied des Debian-KDE-Teams
HP 8510p - Debian Sid
Mitglied des Debian-KDE-Teams