Gdzie mam przechowywać aplikacje wiersza poleceń?

46

Kiedy pobieram aplikacje wiersza poleceń, znajdują się one w moim ~/Downloads/katalogu. Ale wydaje mi się, że to niewłaściwe miejsce, aby zlokalizować aplikację z linii poleceń. Gdzie w systemie plików Mac OS X powinienem przechowywać aplikacje wiersza poleceń?

/Applications/również źle się czuje, więcej dotyczy aplikacji komputerowych. I /bin/brzmi bardziej dla aplikacji należących do OS X.

Jonas
źródło
Zgadzam się z twoim sentymentem, że umieszczanie rzeczy bezpośrednio w / bin lub / Applications to ogólnie kiepska forma. Odpowiedź Patrix jest najbardziej kanoniczną lokalizacją, jaką widziałem dla ogólnego przechowywania programów i skryptów w wierszu poleceń.
bmike
2
Nie uważam ich za zduplikowane, ponieważ połączone pytanie wydaje się bardziej na temat żonglowania kilkoma wyborami stron trzecich i jest to bardziej czyste - dokąd zmierzają moje ręcznie pobrane aplikacje.
bmike

Odpowiedzi:

44

Ponieważ OS X pochodzi z unixowego dziedzictwa, będziesz chciał przechowywać pliki systemowe /usr/local/bindla aplikacji wiersza poleceń i skryptów, które należą do systemu lokalnie, a nie do konkretnego użytkownika. Najpierw może być konieczne utworzenie tego katalogu, uruchamiając:

sudo mkdir -p /usr/local/bin

Możesz przenieść dowolną aplikację wiersza poleceń do tego folderu, uruchamiając:

sudo mv my-binary /usr/local/bin/

Aby upewnić się, że /usr/local/binjest to część standardowej ścieżki wyszukiwania w Terminalu, sprawdź zawartość /etc/pathsi dodaj ją, jeśli to konieczne:

grep -w /usr/local/bin /etc/paths || sudo sh -c 'echo /usr/local/bin >> /etc/paths'

Niektórzy użytkownicy tworzą drugi katalog dla skryptów na poziomie użytkownika, ale jest to jeszcze bardziej zależne od osobistych preferencji.

Zazwyczaj tworzę katalog bin w każdym folderze użytkownika, a następnie ukrywam go w Finderze - ale możesz sam podjąć decyzję, czy chcesz go ukryć:

 mkdir ~/bin
 chflags hidden ~/bin

W takim przypadku będziesz chciał, aby ścieżka każdego użytkownika zawierała tę lokalizację, modyfikując skrypty startowe powłoki ( ~/.bash_profiledla bash, która jest standardową powłoką)

 export PATH=$PATH:~/bin

lub poprzez stałe kodowanie ścieżki do każdej aplikacji podczas jej uruchamiania.

nohillside
źródło
3
To absolutnie najlepsza propozycja, którą chciałbym dać każdemu, kto o to poprosi. Dodam tylko 2 rzeczy: 1) /etc/launchd.conf może być również miejscem, do którego należy dodać ścieżkę, 2) chociaż używam / usr / local / dla narzędzi uniksowych zainstalowanych homebrewdla moich własnych skryptów powłoki I mam ~ / Dropbox / bin /, który również dodałem do mojej $ PATH, więc mam wszystkie niestandardowe skrypty powłoki na wszystkich komputerach Mac. Ale robię to oprócz / usr / local / bin / not zamiast tego.
TJ Luoma,
/ usr / local / bin jest tradycyjny spot UNIX skryptów użytkownika, który daje dostęp do innych użytkowników w systemie. Umieszczenie tam skryptów bez wysiłku umieści je w $ PATH wszystkich użytkowników. Ale wierzę, że sposób Maca , ponieważ większość komputerów Mac ma jednego użytkownika, polega na utworzeniu katalogu, uczynieniu go niewidocznym i dodaniu go do użytkowników, aby stał się częścią użytkowników $ PATH. jest doskonałą lokalizacją dla bezpieczeństwa i migracji. W przeciwnym razie musisz pamiętać o rzeczach, które zostawiłeś w / usr / local / bin. I jest też miły. ~/binchflags uchg ~/bin~/.bash_profile~/binln -s ~/bin ~/Dropbox/
chillin
7

Zastanów się nad utworzeniem /optkatalogu, który jest inną lokalizacją, w której niestandardowe oprogramowanie uniksowe pojawiałoby się zgodnie z konwencją.

Matt Stephenson
źródło
5
/opt/jest bardzo przydatny w przypadku kompletnych aplikacji, ale /usr/local/bin/jest bardziej odpowiedni dla samodzielnych skryptów wiersza poleceń. Często zaleca się stosowanie /opt/w przypadkach, w których zbiór powiązanych skryptów działa jak biblioteka (np /opt/myscriptslib/bin/.).
plazmid87,
Dzięki za porady. Osobiście utworzyłem folder / opt /, aby umieścić moje oprogramowanie, a następnie po prostu utworzyłem dowiązania symboliczne do / usr / local / bin dla wszystkich plików wykonywalnych ... wtedy nie trzeba dodawać / opt / myspecific-soft do zmiennej środowiskowej ścieżki .
рüффп