find in cygwin-Umgebung ...

  • Hallo,


    gibt es hier auch Experten zu cygwin? Ich habe folgendes Problem:


    Code
    + find --help
    FIND: Parameterformat falsch
    + cd /etc
    + find .
    FIND: Parameterformat falsch
    + find /etc
    FIND: Ungültige Option

    aber nur wenn das Script über cron gestartet wird. Bei Aufruf auf der Komandozeile ist alles fehlerfrei.


    Hardy

    Suche: 6 Richtige für die nächste Lottoziehung
    PS: Wer Rechtschreibfehler findet, darf sie behalten!

  • ich habs gefunden ...


    die PATH-Variable ist bei den mit cron gestarteten Scripten anders, so daß das Windows-Find ausgeführt wird.

    Suche: 6 Richtige für die nächste Lottoziehung
    PS: Wer Rechtschreibfehler findet, darf sie behalten!

  • Hi,


    kleiner Tip: Man sollte generell in cron gesteuerten Scripten und Befehlen mit vollen Pfaden arbeiten, da die Cronumgebung teilweise sehr rudimentaer sein kann, auch und gerade auf Linux und "richtigen" Unices wie Solaris oder HP-UX ...


    Ausserdem schliesst man so aus, dass ein Alias statt eines Binaries benutzt wird - so ist z,B, oft ein rm als /bin/rm -i gealiast (schreibt man das so?) und fragt dann jedesmal beim Loeschen, ob man das wirklich will - nix Neues fuer Windowsuser, aber in Scripten unerwuenscht...


    Also - am besten /usr/bin/find statt find benutzen...


    Gruss


    /elle

  • Ich hab es mir zur Gewohnheit gemacht solche Scripte etwa so anzufangen:


    Bash
    #!/bin/sh
    
    
    export PATH=/sbin:/usr/sbin:/usr/local/sbin:/root/bin:/usr/local/bin:/usr/bin:/usr/X11R6/bin:/bin:/usr/games:/opt/gnome2/bin:/opt/gnome/bin:/opt/kde3/bin:/opt/kde2/bin:/usr/lib/java/bin:/opt/gnome/bin
    
    
    export USER=root
    export HOME=/root


    Den Pfad ermittle ich in einer Shell (echo $PATH). Weitere Umgebungsvariablen lassen sich auch schön mir set ermitteln. So hab ich in den Scripten eigentlich eine Umgebung wie in einer login-shell.

  • Hi,


    wenn Deine shell eine bash ist, solltest Du sie aber sicherheitshalber im Hashbang (#!) auch so aufrufen - sonst koennte es - falls Du die scripte auf mehreren Systemen benutzen solltest oder sie weitergeben moechtest - u.U. zu unliebsamen Nebeneffekten kommen, da vielleicht eine andere als /bin/sh verlinkt ist, oder sogar tatsaechlich eine klassische Bourneshell installiert ist. Die kann naemlich z.B. nicht in einem Befehl eine Variable setzen und exportieren, sondern verlangt

    Code
    PATH=/usr/bin:/usr/local/bin:/und/so/weiter
    export PATH


    Also lieber

    Bash
    #!/bin/bash


    schreiben ...


    Gruss


    /elle

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!