• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Die Bildungsoffensive hier im Forum geht weiter! Jetzt sollen Kreativität und technische Möglichkeiten einen neue Dimension erreichen. Das Thema in diesem Monat lautet - Verkehrte Welt - Hier geht es lang --> Klick

Wohin mit einer ausführbaren UNIX-Datei?

JohnnyAppleseed

Schmalzprinz
Registriert
11.09.07
Beiträge
3.561
Hallo liebe Leute,

ich habe ein UNIX-Programm, welches ich gerne über die einfache Eingabe des Befehls ohne den Pfad aufrufen möchte. Was ist die sinnvolle/vorgesehene Lösung dafür?

Die entsprechenden Programme in /bin ablegen?
In /usr/bin?
In meinen Programme-Order und dann die Umgebungsvariable anpassen?

Ich habe leider keine Ahnung von der Materie und wäre für einen kurzen Tipp sehr dankbar, bevor ich etwas falsch mache. :-)

Viele Grüße!
 
Ich handhabe es so, dass ich ein bin-Verzeichnis in meinem Home habe und dem entsprechend den Path konfiguriere:
Code:
export PATH=${PATH}:${HOME}/bin
Und wenn der Ordner im Finder stört, lässt er sich auch einfach unsichtbar machen:
Code:
chflags hidden ~/bin

Vorteil: Wenn ich auf einen anderen Rechner migriere, bleibt das Zeug erhalten, da es im Nutzerverzeichnis liegt.
 
  • Like
Reaktionen: JohnnyAppleseed
Der Vorteil ist einleuchtend.

Zum export-command habe ich mir gerade ein wenig durchgelesen und ihn auch verstanden. Weißt du zufällig, wie man Pfade wieder aus der Variable löscht? Ich frage weniger aus konkretem Anlass als aus Interesse.

Vielen Dank an dich!
 
Sorry, das war vielleicht etwas zu knapp oben; die Zeile gehört in deine ".bash_profile" im User-Verzeichnis (existiert sie nicht, einfach erzeugen). Somit wird der Pfad immer gesetzt, wenn du eine Shell öffnest.
 
Perfekt, dann werden also nicht nur die Programme, sondern auch die PATH-Einstellung bei Updates im Home-Verzeichnis beibehalten. Jetzt habe ich es komplett verstanden. Danke noch einmal!
 
wie man Pfade wieder aus der Variable löscht?
Beispielsweise so:
Code:
foobar=""
to_remove="/usr/local/bin"
PATH="::${PATH}::"
PATH="${PATH/:${to_remove}:/::}"
until [ "_${foobar}" == "_${PATH}" ]
do    foobar="${PATH}"
      PATH="${PATH%:}"
      PATH="${PATH#:}"
      PATH="${PATH/::/:}"
done
unset foobar to_remove
export PATH
Hint:
Nur Shell-interne Befehle nutzen, wenns nur irgendwie machbar ist.
In Shell-Profiles keine externen Tools wie grep, sed, awk, tr, cut, head, tail etcetera einsetzen!
No-Go! Zeitbombe und Sicherheitsrisiko^2
 
Danke, Rastafari! Ich glaube, dafür bin ich von meinen Kenntnissen her noch nicht bereit. Ich werde vorerst versuchen, mich davon fern zu halten. Deinen Tipp mit den Shell-internen Befehlen werde ich beherzigen; export wäre Shell-intern, richtig?

(Gibt es hier eigentlich keine Möglichkeit, inline Text mit fester Laufweite zu schreiben?)
 
Monospaced Text geht in CODE-Tags.
Einen Überblick über alle Shell-internen Befehle erhältst du durch ein simples "help", oder versuche "man builtin"
Beachte, dass sich Posix-Mode (/bin/sh) und normaler Betrieb (/bin/bash) in einigen Punkten deutlich unterscheiden, zB beim Globbing, bei Patternmatch oder den voreingestellten Shelloptionen (shopt), welche das Verhalten teils gravierend ändern können. Eine Profile muss immer so geschrieben sein dass sie auch mit dem Posix-Mode einwandfrei läuft, dementsprechende Tests sind eine sehr gute Idee.