Gdzie jest dobre stałe miejsce do instalowania niestandardowych skryptów bash?


32

Mam zamiar zainstalować „leiningen”, który jest skryptem bash dla języka programowania clojure z dużą użytecznością ... ... ale nie jestem pewien, gdzie właściwe jest -put- skrypt wykonywalny w systemie Linux system, aby był stale i stabilnie dostępny.

Nie sądzę, żeby gdziekolwiek w / home miało sens, ale nie wiem, który katalog / katalogi powinny być do tego użyte.

/ usr / share?


Odpowiedzi:


45

(Uwaga: ~tłumaczy jak /home/userw tym poście)

Osobiście umieszczam wszystkie niestandardowe skrypty systemowe /usr/local/bini wszystkie osobiste skrypty bash ~/bin. Bardzo niewiele programów, które instaluję, umieszcza się w /usr/local/binkatalogu, więc nie jest zbyt zagracone i było już w $PATHzmiennej na większości moich komputerów.

Aby dodać /usr/local/bindo ścieżki systemowej (jeśli jeszcze jej nie ma), dodaj to do /etc/profile:

PATH=$PATH:/usr/local/bin
export PATH

Aby dodać ~/bindo ścieżki użytkownika, dodaj to do ~/.bash_profile:

PATH=$PATH:$HOME/bin
export PATH

Czasami domyślny .bash_profileplik będzie mieć if który automatycznie dodaje ~/binsię $PATH, jeśli istnieje, więc utworzyć ~/bini otworzyć nowy terminal, aby zobaczyć, czy twoje już to robi.


BSD robią to domyślnie.
— Chris S

@Chris: BSD umieszczają wiele rzeczy w / usr / local / bin
— Dan Andreatta

Jaka jest różnica między skryptami bash a skryptami systemowymi i czy istnieje powód, aby je rozdzielić?
— Hashim

@Hashim Oczywiście nie mogę wypowiadać się w imieniu Trey, ale narzędzia, które opracowujesz dla własnych potrzeb, mają tendencję do „przechodzenia” na narzędzia systemowe, gdy zauważysz, że rozwiązują problem, z którym borykają się inni, lub masz inną instalację systemową, która zależy na jednym z tych narzędzi. Podejrzewam, że próg instalacji czegoś systemowego jest raczej wysoki dla większości programistów. Ponadto narzędzie, które udostępniasz, musi mieć dokumentację itp., Której wielu programistów rzadko pisze inaczej.
— tripleee

Nawiasem mówiąc, nie ma potrzeby exportwielokrotnego wprowadzania zmiennej (i prawdopodobnie twój system jest już oznaczony PATHdo eksportu, więc nie musisz tego robić sam).
— tripleee

9

/ usr / local / to naprawdę właściwe miejsce, podczas gdy / opt jest naprawdę przeznaczony do aplikacji innych firm; „/ opt jest zarezerwowany do instalacji dodatkowych pakietów aplikacji”. Jest to część standardu hierarchii systemów plików.

Zobacz http://www.pathname.com/fhs/pub/fhs-2.3.html w celu omówienia / opt.

W przypadku / usr / local / służy do „użytku przez administratora systemu”. Tylko nie zapomnij o rzeczach tam zawartych - udokumentuj to.


Podany link informuje: „Katalogi / opt / bin, / opt / doc, / opt / include, / opt / info, / opt / lib i / opt / man są zastrzeżone do użytku lokalnego administratora systemu”. W usłudze / usr / local nie ma nic. Wspomniany jest tylko / usr / local / share. Z drugiej strony, skompilowane programy są zwykle instalowane w / usr / local w systemie Linux. Czy nie uważasz, że / opt / bin jest lepszym miejscem do korzystania przez administratora systemu?
— raacer

1
@raacer Z mojego doświadczenia wynika, że /usr/local- jak sama nazwa wskazuje - jest dla lokalnego administratora i /optdla rzeczy, które nie są oficjalnie dystrybuowane, takich jak komercyjne oprogramowanie innych firm, które jest zarządzane w podobny sposób (może zostać zastąpione lub usunięte z aktualizacji z upstream), ale nie zarządzany przez menedżera pakietów dystrybucji, lub być może faktycznie dystrybuowany jako RPM lub .debpakiety, ale nie zorganizowany i spakowany zgodnie ze wszystkimi zasadami i konwencjami dystrybucji.
— tripleee

1
@raacer W /usr/localdalszej części dokumentu znajduje się osobna sekcja .
— tripleee

@raacer tripleee ma rację. Oto link: pathname.com/fhs/pub/ ... .. poprawne, skompilowane programy (zwykle open source), które zostały skompilowane / zbudowane specjalnie dla tego systemu lub współużytkowane przez kilka systemów (ale nie są częścią normalnego pakowania / dystrybucji systemu operacyjnego, ale które w dużej mierze opierają się na współdzielonych bibliotekach) powinny być zainstalowane w / usr / local (w zasadzie odzwierciedla hierarchię / usr). Oprogramowanie innych firm, które są skompilowane w możliwie innym systemie z możliwym wsparciem własnej biblioteki (tj. Firefox, userify), powinno przejść do / opt.
— Jamieson Becker

3

Historycznie używałbyś czegoś takiego jak / opt. Wszystko jest w porządku, o ile jest aktualizowane w $ PATH dla użytkowników, którzy powinni je mieć (stąd wszystko w / home jest złym pomysłem).


2

/usr/share/clojurewydaje się być powszechnym miejscem do umieszczania plików binarnych i bibliotek clojure - dlaczego nie wiem, wydaje się to naturalne /usr/local/share/clojure- dlatego tworzenie sitepodkatalogu dla tych skryptów bash wydaje się w porządku.

Chodzi o to, że bardziej sensowne jest organizowanie skryptów według funkcji, a nie wszystkie skrypty bash w tym samym miejscu.


1
Istnieje kilka problemów z użyciem /usr/sharetego. Przede wszystkim shareoznacza pliki niezależne od architektury (tj. Współdzielone między architekturami). Z tego powodu biblioteki i pliki wykonywalne nie należą do sharekatalogu. Po drugie, z wyjątkiem /usr/localniczego innego, niż menedżer pakietów dystrybucyjnych powinien kiedykolwiek pisać /usr.
— kasperd

2

/usr/local, Uważam, że istnieje pewne zamieszanie w znaczeniu „lokalny”.

Jak rozumiem, „lokalny” nie oznacza „pochodzący z / z lokalnego komputera”, ale, mówiąc prościej, „specyficzny dla lokalnego komputera”, który może, ale nie musi, pochodzić z / z lokalnego komputera.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.