1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen
  2. Unsere jährliche Weihnachts-Banner-Aktion hat begonnen! Wir freuen uns auf viele, viele kreative Vorschläge.
    Mehr dazu könnt Ihr hier nachlesen: Weihnachtsbanner 2016

    Information ausblenden

~/.profile um Suchpfad ergänzen, aber wie?

Dieses Thema im Forum "Unix & Terminal" wurde erstellt von jopa5800, 24.06.08.

  1. jopa5800

    jopa5800 Jonagold

    Dabei seit:
    30.04.06
    Beiträge:
    21
    Hallo ins Forum,

    ich habe versucht, nach Anweisungen, die ich im Netz fand, den Suchpfad um das Verzeichnis
    ~/meinprog zu ergänzen. Funktioniert nur leider nicht. Was mache ich falsch?
    Hier mein ~/.profile:


    ##
    # DELUXE-USR-LOCAL-BIN-INSERT
    # (do not remove this comment)
    ##
    echo $PATH | grep -q -s "/usr/local/bin"
    if [ $? -eq 1 ] ; then
    PATH=$PATH:/usr/local/bin
    export PATH=$PATH:/Users/jopa/meinprog
    fi

    test -r /sw/bin/init.sh && . /sw/bin/init.sh



    Wenn ich im Terminal eingebe:

    echo $PATH | tr ':' '\n'

    erhalte ich (wie vor der Ergänzung auch schon):

    /sw/bin
    /sw/sbin
    /bin
    /sbin
    /usr/bin
    /usr/sbin
    /usr/local/bin
    /usr/texbin
    /usr/X11R6/bin

    Danke für Eure Hilfe.

    Gruß

    jopa
     
  2. quarx

    quarx Hadelner Sommerprinz

    Dabei seit:
    17.04.05
    Beiträge:
    8.541
    Nimm doch einfach den export-Befehl aus dem if-Konstrukt heraus, weiter nach unten.
     
  3. jopa5800

    jopa5800 Jonagold

    Dabei seit:
    30.04.06
    Beiträge:
    21
    Hallo quarx,

    zunächst einmal vielen Dank für Deinen Hinweis. Das war soweit auch erfolgreich. ~/meinprog ist jetzt tatsächlich im Suchpfad, allerdings erhalte ich jetzt mit echo $PATH | tr ':' '\n' im Anschluss an die Suchpfade noch folgende Meldungen (abgekürzt):

    dslb-xxx-xxx-xxx-xxx:~ jopa$ /sw/bin
    -bash: /sw/bin: is a directory
    dslb-xxx-xxx-xxx-xxx:~ jopa$ /sw/sbin
    -bash: /sw/sbin: is a directory
    dslb-xxx-xxx-xxx-xxx:~ jopa$ /bin
    -bash: /bin: is a directory
    usw.

    Da wird wohl versucht, die Verzeichnisse aus Programme anzusprechen. Kann das später irgendwelche Probleme verursachen? Danke für Deine oder Eure Hilfe.

    Gruß

    jopa
     
  4. Skeeve

    Skeeve Pomme d'or

    Dabei seit:
    26.10.05
    Beiträge:
    3.121
    So wie ich das sehe, versucht dieser Code einen Pfad anzuhängen, sofern er nicht schon im Pfad ist. Ich habe mir dafür folgende Funktion gebastelt:
    Code:
    addpath () {
            P=$1
            shift
            while [ -n "$1" ]
            do      case :$P: in
                    *:$1:*) ;;
                    *) P=$P:$1 ;;
                    esac
                    shift
            done
            echo $P
    }
    
    Aufgerufen wird sie wie folgt:
    Code:
    PATH=`addpath $PATH /usr/local/bin /usr/local/mysql/bin ~/meinprog`
    export PATH
    
    Alle angegebenen Pfade werden einzeln geprüft und nur bei Nicht-Vorhandensein an $PATH angehängt.
     
  5. IceHouse

    IceHouse Ribston Pepping

    Dabei seit:
    30.09.04
    Beiträge:
    297
    Anbei eine kleine Angel, um dich in Zukunft selber mit Fisch zu versorgen :D

    man path_helper

    Gruss von IceHouse
     
  6. jopa5800

    jopa5800 Jonagold

    Dabei seit:
    30.04.06
    Beiträge:
    21
    Hallo Skeeve,

    ich habe leider (noch) nicht soviel Ahnung von Bash & Co, daß ich Deine Lösung einfach nachvollziehen könnte. Dennoch vielen Dank. Ich hab es mir kopiert, zur späteren Verwendung.

    quarx’ Lösung funktioniert und inzwischen hab ich auch auf meine 2. Frage (die Bash Fehlermeldungen nach der Umsetzung von quarx’ Vorschlag) eine Lösung:


    ##
    # DELUXE-USR-LOCAL-BIN-INSERT
    # (do not remove this comment)
    ##
    echo $PATH | grep -q -s "/usr/local/bin"
    if [ $? -eq 1 ] ; then
    PATH=$PATH:/usr/local/bin
    export PATH=$PATH:

    fi
    export PATH=$PATH:/Users/jopa/meinprog

    test -r /sw/bin/init.sh && . /sw/bin/init.sh

    Bis jetzt funktioniert alles so wie es soll. Wenn natürlich jemandem etwas Fehlerhaftes auffält, bin ich für Hinweise dankbar.

    Nochmals herzlichen Dank an Euch

    Gruß

    jopa
     
  7. jopa5800

    jopa5800 Jonagold

    Dabei seit:
    30.04.06
    Beiträge:
    21
    Danke IceHouse,

    werde ich mir auf alle Fälle später mal anschauen.

    Gruß

    jopa
     
  8. Skeeve

    Skeeve Pomme d'or

    Dabei seit:
    26.10.05
    Beiträge:
    3.121
    Code:
     addpath () { # definiert eine Funktion
            # Kopiere den ersten Parameter nach $P
            P=$1
            # verschiebe alle Parameter um 1 nach links
            shift
            # Solange noch Parameter da sind ($1 nicht leer ist)
            while [ -n "$1" ]
            # prüfe das bisherige $P, eingerahmt von 2 Doppelpunkten
            do      case :$P: in
                    # wenn es diesem Muster entspricht, mach nichts
                    *:$1:*) ;;
                    # ansonsten hänge $1 an $P an
                    *) P=$P:$1 ;;
                    esac
                    # verschiebe wieder um einen Parameter
                    shift
            done
            # gib das Ergebnis aus
            echo $P
    }
    
    Ein Beispiel:
    Code:
    bsp=/pfad/a:pfad/z
    addpath $bsp /pfad/b /pfad/a /pfad/c
    
    nun passier folgendes:
    Code:
    [color=teal]in addpath ist:[/color]
      [color=purple]$1=[/color][color=blue]/pfad/a:/pfad/z[/color]
      [color=purple]$2=[/color][color=blue]/pfad/b[/color]
      [color=purple]$3=[/color][color=blue]/pfad/a[/color]
      [color=purple]$4=[/color][color=blue]/pfad/c[/color]
    [color=teal]P=[color=blue]$1[/color][/color]
      [color=purple]$P=[/color][color=blue]/pfad/a:/pfad/z[/color]
      [color=purple]$1=[/color][color=blue]/pfad/a:/pfad/z[/color]
      [color=purple]$2=[/color][color=blue]/pfad/b[/color]
      [color=purple]$3=[/color][color=blue]/pfad/a[/color]
      [color=purple]$4=[/color][color=blue]/pfad/c[/color]
    [color=teal]shift[/color]
      [color=purple]$P=[/color][color=blue]/pfad/a:/pfad/z[/color]
      [color=purple]$1=[/color][color=blue]/pfad/b[/color]
      [color=purple]$2=[/color][color=blue]/pfad/a[/color]
      [color=purple]$3=[/color][color=blue]/pfad/c[/color]
    
    [color=teal]$1 ist nicht leer[/color]
    [color=teal]case :$P: -> case :/pfad/a:/pfad/z:[/color]
    [color=teal]*:$1:*) -> *:/pfad/b:* -> passt nicht[/color]
    [color=teal]*) -> passt -> P=[color=blue]$P:$1[/color][/color]
      [color=purple]$P=[/color][color=blue]/pfad/a:/pfad/z:/pfad/b[/color]
      [color=purple]$1=[/color][color=blue]/pfad/b[/color]
      [color=purple]$2=[/color][color=blue]/pfad/a[/color]
      [color=purple]$3=[/color][color=blue]/pfad/c[/color]
    [color=teal]shift[/color]
      [color=purple]$P=[/color][color=blue]/pfad/a:/pfad/z:/pfad/b[/color]
      [color=purple]$1=[/color][color=blue]/pfad/a[/color]
      [color=purple]$2=[/color][color=blue]/pfad/c[/color]
    
    [color=teal]$1 ist nicht leer[/color]
    [color=teal]case :$P: -> case :/pfad/a:/pfad/z:/pfad/b[/color]
    [color=teal]*:$1:*) -> *:/pfad/a:* -> passt! -> nichts weiter geschieht[/color]
    [color=teal]shift[/color]
      [color=purple]$P=[/color][color=blue]/pfad/a:/pfad/z:/pfad/b[/color]
      [color=purple]$1=[/color][color=blue]/pfad/c[/color]
    
    [color=teal]$1 ist nicht leer[/color]
    [color=teal]case :$P: -> case :/pfad/a:/pfad/z:/pfad/b[/color]
    [color=teal]*:$1:*) -> *:/pfad/c:* -> passt nicht[/color]
    [color=teal]*) -> passt -> P=[color=blue]$P:$1[/color][/color]
      [color=purple]$P=[/color][color=blue]/pfad/a:/pfad/z:/pfad/b:/pfad/c[/color]
      [color=purple]$1=[/color][color=blue]/pfad/c[/color]
    
    [color=teal]shift[/color]
      [color=purple]$P=[/color][color=blue]/pfad/a:/pfad/z:/pfad/b:/pfad/c[/color]
    
    [color=teal]$1 ist leer -> Schleife zuende[/color]
    [color=teal]echo $P
      liefert /pfad/a:/pfad/z:/pfad/b:/pfad/c[/color]
    
    
     
  9. jopa5800

    jopa5800 Jonagold

    Dabei seit:
    30.04.06
    Beiträge:
    21
    Danke, Skeeve…

    …das ist wirklich sehr interessant und lehrreich. Hab hier schon ein Shellscripting Buch rumliegen und werde mic damit mal näher beschäftigen.

    Gruß

    jopa
     

Diese Seite empfehlen