Linux Notizen / Gebissen
StartSeite | LinuxNotizen/ | Neues | TestSeite | ForumSeite | Teilnehmer | Kategorien | Index | Hilfe | Einstellungen | Ändern
Beginn einer Sammlung. Nicht als Kritik an Linux bzw. Unix, sondern um die Umstellungschwierigkeiten zu dokumentieren.
aktuelles Verzeichnis im Pfad | |
Gestern hat mich das von mir in die PATH-Variable eingefügte aktuelle Verzeichnis gebissen. Vermutlich werde ich jetzt den Empfehlungen folgen und das aktuelle Verzeichnis wieder entfernen.
Situation: Über crontab werden auf meinem Webserver verschiedene Wiki-Aktivitäten automatisch zu bestimmten Zeiten durchgeführt. crontab ist eine Super-Sache, typisch Unix, einfach und mächtig. Nur dass auf einmal ein Script, das auf der Kommandozeile funktioniert, nicht geht. Mit den ganzen Beobachtungsschwierigkeiten solcher getimeter Hintergrund-Vorgänge hat mich das einige Stunden gekostet.
Ursache war, dass ein Script ein anderes Script "script2" aus dem aktuellen Verzeichnis direkt aufgerufen hat. Zwar waren User und Rechte zwischen Terminal-Fenster und crontab ident, aber die Environment-Initialisierung findet nicht gleichartig statt (klarerweise), sodass "script2" nicht auffindbar war. Ändern der Scriptzeile in "./script2" hat das Problem behoben.
Im allgemeinen werden mögliche Sicherheitsprobleme als Gegenargumente angeführt. Aus meiner heutigen Sicht (als bejahrter Linux-Neuling) würde ich die Argumente so formulieren:
- "./script2" hat eine eindeutige Semantik, "script2" nicht - das erste ist daher vorzuziehen. Das aktuelle Verzeichnis im PATH erlaubt es eine weniger klare Semantik zu verwenden und führt damit potentiell zu schlechter portablen Scripts.
- Es ist Unix-Tradition, das aktuelle Verzeichnis nicht im Pfad zu haben. Man kann gegen Traditionen schräg bürsten, aber darf sich nicht wundern, wenn sie einen dann beißen.
-- HelmutLeitner
- Würde ich so nicht stehenlassen. Es ist Tradition, dass man deinem Vorschlag folgt, wenn man als root arbeitet. Ansonsten würde ich den gewohnten Komfort ohne ./ nicht missen wollen. Immerhin kann man ja über die Reihenfolge der im Pfad vorkommenden Verzeichnisse gewisse Sicherheitsrisiken minimieren. Crontab-Skripte muss man generell in einer Shell testen, die der entspricht, in der das Skript später laufen soll. Ansonsten kämen neben dem PATH auch andere Environmentvariablen als potentielle Fehlerquelle in Frage. (Nebenbei bemerkt kann man ähnliche Betrachtungen auch für Windows anstellen ;-) -- SDö
- Das hat nichts mit Unix vs. Windows zu tun (siehe Disclaimer am Beginn der Seite). Linux ist in dem von mir betrachteten Bereich viel mächtiger und flexibler als Windows. Mir geht es um die Umstellung. Wenn man mal Experte ist, macht man alles instinktiv richtig und hat die Anfangsschwierigkeiten vergessen.
- Als Benutzer und Entwickler (auf meiner Maschine) habe ich es auch immer so empfunden wie du. Allerdings ergibt das Mehr an Bequehmlichkeit eben mehr Testaufwand oder ein höheres Fehlerrisiko für portable Scripte. -- HelmutLeitner
StartSeite | LinuxNotizen/ | Neues | TestSeite | ForumSeite | Teilnehmer | Kategorien | Index | Hilfe | Einstellungen | Ändern
Text dieser Seite ändern (zuletzt geändert: 16. Januar 2004 16:21 (diff))