OS X - Erstellen Sie ein persönliches bin-Verzeichnis (~ / bin) und führen Sie Skripts aus, ohne deren vollständigen Pfad anzugeben

19

Ich versuche also, ein persönliches binVerzeichnis in meinem privaten Ordner zu erstellen . Ich habe folgenden Ordner erstellt:

/Users/thi/bin

Ich habe meine Skripte in diesem Ordner abgelegt, aber wenn ich im Terminal eingebe:

myScript

Es läuft nicht.

Mir wurde gesagt, dass ich diesen Bin-Pfad exportieren muss, etwas, das damit zusammenhängt echo $PATH, aber ich weiß nicht, wie ich es machen soll.

Thi G.
quelle
siehe auch gegen ende von apple.stackexchange.com/a/98626
nohillside

Antworten:

20

Sie müssen der Datei Folgendes hinzufügen ~/.profile:

export PATH=/Users/thi/bin:$PATH

Dann source ~/.profile

Beachten Sie, dass Sie diese Datei möglicherweise erstellen müssen. Da sie mit einem beginnt, wird .sie möglicherweise nicht im Finder angezeigt, um über eine Anwendung wie einen Texteditor bearbeitet zu werden. Um alle Dateien einschließlich versteckter Dateien aufzulisten, verwenden Sie:

ls -la ~/
tfjgeorge
quelle
Wenn ich export PATH = / Users / thi / bin: $ PATH zu meiner .bashrc-Datei hinzufüge, wird es funktionieren? Ist es richtig?
Thi G.
11
Besser verwenden $HOME/binals /Users/thi/bin. Sie können dann Ihre Einstellungen auf einen anderen Computer kopieren, auf dem sich Ihr Benutzername möglicherweise unterscheidet.
lhf
Wenn ich das Terminal eintippe: PATH = $ HOME / bin: $ PATH und dann: export PATH. Wird es den Trick machen?
Thi G.
1
Wenn Sie dies tun, werden die Einstellungen jetzt geändert, jedoch nicht bei zukünftigen Startvorgängen. Um den Pfad so zu ändern, dass Neustarts überstanden werden, müssen Sie diese Befehle in Ihre .profileDatei aufnehmen.
Daniel
1
Super, vielen Dank für die Antworten. Fügte ich export PATH=$HOME/bin:$PATHmeinem hinzu $HOME/.bash_profile.
Thi G.
10

Wenn Sie bash verwenden, fügen Sie eine Zeile wie die folgende hinzu ~/.bash_profile:

PATH=~/bin:$PATH

PATHist standardmäßig für den Export markiert, daher müssen Sie nicht verwenden export.

Wenn beide ~/.bash_profileund ~/.profileexistieren, liest bash nur , ~/.bash_profilewenn es als interaktive Login - Shell aufgerufen wird. ~/.profilewird auch von anderen Shells verwendet, die möglicherweise nicht die gleichen Konfigurationsoptionen wie bash verstehen.

Terminal und iTerm 2 öffnen standardmäßig neue Shells als Login-Shells. Wenn bash als interaktive Anmeldeshell aufgerufen wird, liest es, ~/.bash_profileaber nicht ~/.bashrc. Die Terminal-Emulatoren auf anderen Plattformen öffnen häufig neue Shells als Nicht-Login-Shells, sodass beispielsweise Bash-Reads ~/.bashrcaber nicht ausgeführt werden ~/.bash_profile. O X - Benutzer verwendet oft ~/.bash_profileals persönliche Konfigurationsdatei entsprechend ~/.bashrcauf anderen Plattformen, aber es ist auch üblich , zu Quelle ~/.bashrcvon ~/.bash_profileoder Terminal sagen oder iTerm 2 neue Schalen als Nicht-Login - Shells zu öffnen.

Sie können den Pfad auch globaler in /etc/pathsoder ändern. /etc/launchd.confIn vielen Kontexten wird der Pfad jedoch weiterhin standardmäßig verwendet /usr/bin:/bin:/usr/sbin:/sbin. Und ich musste nur wirklich den Pfad in Shells und Texteditoren ändern.

Lri
quelle
Toll, danke für die Antwort. Fügte ich export PATH=$HOME/bin:$PATHmeinem hinzu $HOME/.bash_profile.
Thi G.
Sie müssen nicht exportieren , und beide ~(wenn sie nicht in Anführungszeichen stehen) und $HOMEwerden vor der Variablenzuweisung erweitert, wenn Sie den Export oder eine einfache Zuweisung verwenden.
Lri
Lauri Ranta, was bevorzugst du persönlich .bash_profileoder .profile? Oder hast du eine .bashrcin deinem Homeverzeichnis?
Thi G.
Früher habe ich nur .bash_profile verwendet, jetzt verwende ich .bashrc als Hauptkonfigurationsdatei und mein .bash_profile enthält nur . ~/.bashrc. Neue Shells werden als nicht angemeldete Shells im Shell-Modus in Emacs und in tmux geöffnet. Ich würde .profile nicht als Hauptkonfigurationsdatei verwenden, da es auch von anderen Shells wie ksh gelesen wird.
Lri
3

Sie würde in der Regel zusätzliche Pfade nach setzen $PATHwie PATH=$PATH:/$HOME/bindenn , wenn Sie nicht eine andere ausführbare Datei mit dem gleichen Namen ersetzen wollen , die in sein könnte /bin, usw.

Nic MacKenzie
quelle
4
Man könnte leicht argumentieren, dass Sie $HOME/bingenau aus diesem Grund am Anfang setzen würden . Entscheidend ist jedoch, dass die Reihenfolge der Verzeichnisse von Bedeutung ist $PATHund die Shell den ersten passenden Befehl auswählt. Vielen Dank für den Hinweis.
Nohillside