Linux: Executable verlinken



  • Ich habe in einem Ordner "/path/to/dir" ein ausführbares Skript "skript.py".
    Dieses Skript würde ich gerne er die Kommandozeile aufrufen können, ohne einen Pfad angeben zu müssen.

    Am liebsten wäre wir, wenn ich "skript.py" auch gleich in /usr/local/bin hätte.
    Nun hängt "skript.py" von einigen Dateien relativ zu seinem Pfad ab, so dass ein einfacher Soft-Link nicht ausreichend ist.

    Gibt es hier eine schönere Lösung, als "/path/to/dir" in den PATH aufzunehmen?



  • cd "/path/to/dir"
    am Anfang in das Skript einbauen.

    Das hat allerdings Nachteile bei der Dateiverarbeitung, wenn du Dateien an das Skript übergeben musst.



  • In einem Python-Skript kannst du mit

    os.path.realpath(__file__)
    

    deinen aktuellen "echten" Pfad leicht ermitteln (löst Symlinks auf). Davon nimmst du dann die Verzeichniskomponente und hast dein base directory. Sämtliche Referenzen machst du einfach nicht mehr relativ, sondern relativ zum basedir. Also so:

    # alt
    foo('foo/bar/baz')
    
    # neu
    basedir = os.path.dirname(os.path.realpath(__file__))
    foo(os.path.join(basedir, 'foo/bar/baz'))
    


  • .bashrc

    doShit() {
      /path/for/shit/foo.py --some-arg
    }
    

    ?


Anmelden zum Antworten