Ich verwende MacOSX Sierra und habe es homebrew
installiert. Also versuche ich, compress-slide.sh
ein Skript unter zu erstellen ~/bin
. Damit ich Symlinks loswerden kann, habe ich das ~/bin
in meinem Pfad hinzugefügt, sodass mein Pfad jetzt so aussieht:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:~/bin
Ich habe den Pfad unter eingestellt /etc/paths
und so sieht er aus:
/usr/local/bin
/usr/bin
/bin
/usr/local/sbin
/usr/sbin
/sbin
~/bin
Aber wenn ich es versuche which compress-slide.sh
, wird nichts gefunden, es gibt mir nicht den Pfad, den ich erwarte, was bedeutet, dass ~/bin/compress-slide.sh
ich dieses Skript nur verwenden möchte, wenn ich mich in verschiedenen Verzeichnissen befinde. Außerdem habe ich sichergestellt, dass ich der Besitzer des Skripts bin und dass es die Ausführungsberechtigung hat.
-rwxr-xr-x 1 dummyuser dummyuser 135B Dec 28 18:13 compress-slide.sh
Hier ist der Inhalt meines Skripts, nur ein einfacher Befehl, um zu testen, ob es funktioniert;
#!/usr/bin/env bash
echo 'test'
Hier ist meine homebrew
Konfig:
HOMEBREW_VERSION: 1.1.5
ORIGIN: https://github.com/Homebrew/brew
HEAD: 9cd5a21b473f0271b162bbe7f77f7d1468c0cfa1
Last commit: 2 weeks ago
Core tap ORIGIN: https://github.com/Homebrew/homebrew-core
Core tap HEAD: 797542c1bf61c4cfc58c7a52a2534d154cc584d1
Core tap last commit: 8 days ago
HOMEBREW_PREFIX: /usr/local
HOMEBREW_REPOSITORY: /usr/local/Homebrew
HOMEBREW_CELLAR: /usr/local/Cellar
HOMEBREW_BOTTLE_DOMAIN: https://homebrew.bintray.com
CPU: octa-core 64-bit ivybridge
Homebrew Ruby: 2.0.0-p648
Clang: 8.0 build 800
Git: 2.10.1 => /Applications/Xcode.app/Contents/Developer/usr/bin/git
Perl: /usr/bin/perl
Python: /usr/bin/python
Ruby: /usr/bin/ruby => /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/bin/ruby
Java: 1.8.0_60, 1.7.0_79
macOS: 10.12.2-x86_64
Xcode: 8.2.1
CLT: N/A
X11: N/A
Liegt das an einem Homebrew
Konflikt mit meinem Setup? Ist das auch jemandem begegnet?
Dein Problem hat nichts mit Faulheit zu tun. Die Anwendung path_helper verhindert die Tilde- und Variablenerweiterung. Hier ist eine modifizierte /private/etc/paths
Datei.
/usr/local/bin
/usr/bin
/bin
/usr/sbin
/sbin
~/bin
$HOME/local/bin
Die path_helper
Anwendung erstellt eine auszuwertende Zeichenfolge unter /private/etc/profile
Verwendung der aktuellen PATH-Variablen zusammen mit den aufgelisteten Verzeichnissen /private/etc/paths
und Dateien darin /private/etc/paths.d
.
/usr/libexec/path_helper -s
PATH="/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:~/bin:\$HOME/local/bin"; export PATH;
Die doppelten Anführungszeichen um die Variable PATH verhindern die Erweiterung der Tilde und der Backslash vor dem Dollarzeichen verhindert die Erweiterung der Variable $HOME.
Ich würde die Skripte, die Sie platzieren, aus dem Pfad zu /usr/local/bin symbolisch verlinken, damit Sie nicht mit der Erweiterung ~ in .dot-Dateien für Ihre Shell argumentieren müssen.
Es ist möglich, einen dauerhaften Weg zu finden, um sicherzustellen, dass Ihre Umgebung für ~ eingerichtet ist - aber ich bin ein Fan von absoluten Pfaden, um Probleme zu vermeiden, wenn Sie mit anderen Benutzern in Kontakt kommen und Kreuzkontaminationen in der Umgebung sowie Probleme wie Sie haben su
.
Hier geht es nicht um homebrew
- rein um bash
oder was auch immer Sie für eine Shell verwenden.
/Users/username/bin
wie /usr/local/bin
Sie es vorgeschlagen haben? Ich weiß, dass ich das kann, ln -s /Users/username/bin/* /usr/local/bin
aber das Problem bei diesem Ansatz ist, dass ich es jedes Mal tun müsste, wenn ich ein neues Skript habe?bin
in den Pfad aufzunehmen. .dot
Ich kann mit den darin enthaltenen Dateien umgehen, vorausgesetzt, es handelt sich nur um einzelne .DS_Store
Dateien. Nochmals vielen Dank für Ihre Hilfe.
kein Hang
~
in Ihrem PATH haben. Bitte verwenden Sie/Users/YOURUSERNAME/bin
stattdessen.JohnnyQ
kein Hang