Dove devo mettere i miei script bash


15

Ho alcuni script bash molto semplici che ho messo insieme per cose che faccio regolarmente. Uno di questi è eseguire la duplicità per eseguire le mie attività di backup. Niente di intelligente, solo un mucchio di se ... quindi dichiarazioni davvero. Dato che questo deve essere eseguito come sudo, sarebbe meglio mettere il mio script in / usr / bin (o altra posizione in PATH), chown to root.root e chmod su 700?


Direi che uso gitper controllare la versione dei tuoi script, mettere copie locali dei repository git da qualche parte in cui ti piace ~, e quindi ricollegare gli script ~/bin.
edwinksl,

Intendi gitcome githubtra le nuvole?
WinEunuuchs2Unix,

2
@ WinEunuuchs2Unix Se vuoi che i tuoi script siano disponibili per altri utenti, dovresti inserirli /usr/local/bin. Altrimenti, direi di inserirli ~/bin. I tuoi script in entrambe le directory dovrebbero essere al sicuro durante l'aggiornamento.
edwinksl,

2
Come sopra, inseriscili in / usr / local / bin. Assicurati solo che i nomi dei tuoi script siano univoci e non un comando / nome binario esistente di Linux. Io stesso aggiungo solo un numero alla fine di qualsiasi script che creo poiché non ho visto alcun nome linux preesistente terminare in un numero. (per non dire che alcuni davvero oscuri potrebbero ...
Doug,

1
@edwinksl Quasi un anno dopo devo dire che ~/binè il posto migliore per la maggior parte degli script in quanto non è necessario utilizzarli sudoper modificarli come quando vengono archiviati /usr/local/bin.
WinEunuuchs2Unix il

Risposte:


3

Salvo i miei script in /opt/scripts.

Se lo script deve essere eseguibile da ogni utente del sistema, è possibile creare un collegamento simbolico a /usr/bin .

Se solo root deve eseguire lo script, è possibile creare un collegamento simbolico a /usr/sbin .

Comando per aggiungere un collegamento simbolico in /usr/bin/:

ln -s /opt/scripts/<script> /usr/bin/

È possibile eseguire lo script, perché /usr/bin/è nel PATH per impostazione predefinita.


1
Vorrei raccomandare che invece di utilizzare /usr/bincome destinazione per lo script shell utente / locale - che sia /usr/local/bin(o /opt/bin) come da Filesystem Hierarchy Standard - Debian Wiki per evitare conflitti (la maggior parte delle volte, si desidera che gli script forniti da Ubuntu abbiano la precedenza).
Shalomb,

Sulla maggior parte dei sistemi di /usr/local/binoverride /usr/bin, come viene più avanti nel percorso. Questo è di proposito, poiché il sistema non inserisce i file lì, quindi è possibile inserire i file lì, che DOVREBBE sovrascrivere quelli forniti dal sistema.
allo

Ho contrassegnato questa come la risposta corretta, anche se entrambe le risposte sembrano soddisfacenti. Il motivo è che ho rinunciato a dare un'occhiata ai documenti FHS e sono venuto a conoscenza con / opt è lì esattamente per questo scopo. Mi piace l'idea che si colleghino semplicemente ai miei script in / usr / local / bin. Grazie per tutti i suggerimenti.
cappellaio

17

Se nessun altro utente diverso da te utilizza questi script:

Quindi puoi tenerli dentro /home/$USER/bin. Crea la bincartella se non è presente e sposta i file lì. La cartella bin in casa verrà automaticamente aggiunta alla variabile d'ambiente PATH. Il codice è nel .profile:

# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/bin" ] ; then
    PATH="$HOME/bin:$PATH"
fi

Vedi Come aggiungere / home / nome utente / bin a $ PATH?

O in alcuni sistemi potrebbe trovarsi in .bashrc:

export PATH=${HOME}/bin/:${HOME}/.local/bin:${PATH}

Grazie anziano Geek

Se questi script devono essere utilizzati da altri utenti:

Quindi /usr/local/bino /opt/binsono buone opzioni. Vedi Esiste un posto standard per posizionare script Linux personalizzati?

Spero che sia di aiuto


3

Ho una directory che uso per la raccolta rapida dei miei strumenti locali o cose che distribuisco su vari computer /usr/local/apollo. Ci sono rami fuori da questa directory per flags, bine logs.

Per le applicazioni che scarico e installo al di fuori dei apt-getrepository predefiniti vengono inseriti /opt/e una directory dal nome dell'app, con un'altra sottodirectory per la versione specifica dell'applicazione. In questo modo la mia versione compilata di un'applicazione gradisce vlco eclipsenon è in conflitto con la versione distribuita.

Il mio uso /optè il modo in cui è stato progettato ufficialmente.

Tra l'altro le directory /usr/local/bin, /usr/local/apolloe /optsopravvive una nuova versione del sistema operativo installazione sovrascrittura.


1
$ echo $PATH /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/binMi piace il fatto che /usr/local/binsia già sulla strada una cosa in meno da ricordare. Mi piace il tuo metodo di /opt/program/versionutilizzo che per roba del kernel ottengo e compilo come EnhanceIO dove cambiano le cose tra le versioni del kernel. È /apollouno sbarco sulla Luna personali preferito o ha significato Ubuntu?
WinEunuuchs2Unix,

Qual è la differenza tra /usr/local/bine usr/local/sbintale che quest'ultima viene rovinata durante gli aggiornamenti?
WinEunuuchs2Unix,

Il programma di installazione annulla le directory che utilizza. Crea convenientemente /usr/localdirectory, ma non inserisce nulla in nessuna di esse. Tali directory sono popolate dall'utente. Molti programmi di origine al di fuori dei repository offrono all'utente la possibilità di selezionare dove vogliono che l'installazione vada. L'impostazione predefinita nei file di configurazione è /usr/local/bin. Quindi, a causa di quanto sia comune utilizzare tali directory, sono incluse nel percorso dell'utente per impostazione predefinita. Per impostazione predefinita, il sistema verifica ~/bin e lo aggiunge al percorso se esiste.
LD James,

Vuoi dire che il sistema controlla ~/bindurante l'installazione o ogni avvio? Qual è la differenza tra sbine bin? Sembrano coesistere, ci devono essere quasi regole su cui scegliere in base al tipo di programma, giusto?
WinEunuuchs2Unix,

1
@ WinEunuuchs2Unix Sul ~/binpercorso ... non è stato aggiunto durante l'installazione. Il sistema lo verifica ad ogni accesso e lo aggiunge a $ PATH se esiste durante l'accesso. Guarda le ultime due righe delle tue ~/.profileimpostazioni.
LD James,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.