it-swarm.it

Come posso rendere un programma eseguibile da qualsiasi luogo

Cosa devo fare se voglio essere in grado di eseguire un determinato programma indipendentemente dalla mia directory corrente? Devo creare un collegamento simbolico al programma in /bin cartella?

79
aneuryzm

Se digiti export PATH=$PATH:</path/to/file> dalla riga di comando durerà solo per la durata della sessione.

Se vuoi cambiarlo permanentemente aggiungi export PATH=$PATH:</path/to/file> nel tuo file ~/.bashrc (alla fine va bene).

55
oadams

La risposta breve è che per eseguire il programma, indipendentemente dalla directory, è necessario disporre della directory del programma nel percorso di ricerca. Il problema può essere risolto inserendo il programma in una cartella già presente in quel percorso, oppure aggiungendo una nuova cartella al percorso: entrambi funzioneranno. La migliore risposta dipende da:

Questo programma è un programma scaricato che hai compilato dalla fonte?

È molto probabile che abbia già un meccanismo di installazione. Nella cartella in cui hai compilato il programma, come root, esegui 'make install'

Questo programma è un programma scaricato che si desidera rendere disponibile come parte dei programmi standard sul computer?

Ha senso inserire questo tipo di applicazione in una cartella standard. è abbastanza comune usare directory come/usr/local/bin per tali programmi. Per fare ciò avrai bisogno dell'accesso root.

Questo è un programma che hai scritto per te stesso e/o non hai privilegi speciali sul computer.

Creazione di una cartella nella directory home denominata "bin" e inserimento del programma. Potrebbe essere necessario modificare lo script di accesso per aggiungere il percorso completo a questa cartella (ad es./Usr/home/jeremy/bin)

Mentre potresti semplicemente aggiungere la sua directory corrente al percorso di ricerca, dovrai continuare a farlo con ogni nuovo programma - e sarà più lavoro a lungo termine.

24
Michael Shaw

Inserire un collegamento al file nella directory /bin Non è la cosa migliore da fare per diversi motivi.

  • Se il file eseguibile effettivo si trova in una posizione che alcuni utenti non possono vedere o eseguire, lo vedono come un link errato o un programma disfunzionale.
  • La directory /bin Dovrebbe essere riservata ai programmi necessari per il funzionamento del sistema (cose come chmod, mkdir, ecc.).

Puoi effettivamente inserire (installare) il file eseguibile in /usr/bin/ O anche /usr/local/bin/. Naturalmente, a quel punto hai installato manualmente il programma; la tua distribuzione non ne terrà traccia come fa il resto dei tuoi programmi: dovrai aggiornarla manualmente quando necessario e rimuoverla manualmente se vuoi che scompaia. Inoltre, dovrai sapere da quali pacchetti dipende (sembra che tu abbia già usato il programma, quindi ci pensiamo noi, ma in generale ...).

A meno che non stia configurando un programma che mi aspetto che altri utenti usino, non è quello che faccio di solito: creo una directory bin solo per me nella mia directory home e modifico il mio profilo Shell per aggiungere ~/bin/ alla mia variabile di ambiente PATH. Trovo più facile tenere traccia dei programmi che ho installato in quel modo, perché è separato dal resto del sistema.

17
Shawn J. Goff

Se si desidera eseguire un comando foo nella directory in cui si trova attualmente Shell, in pratica sono disponibili due opzioni:

  1. Genere ./foo al prompt della shell.

  2. Aggiungi il . directory (. è un nome per "la directory corrente") per la variabile di ambiente PATH; come lo fai dipende dalla Shell che stai usando:

    • per le shell di tipo Bourne (bash, zsh, ksh, ecc.) scrivi (vedi questa pagina per maggiori informazioni):

      export PATH=$PATH:.
      
    • per le shell di tipo csh (tcsh, csh) scrivi (vedi questa pagina per maggiori informazioni):

      set path = ( $path .)
      

Nota che 2. è un rischio per la sicurezza sui sistemi multiutente: immagina di cd nella directory /tmp e un utente malintenzionato ha creato un binario malware chiamato ls ..

6
Riccardo Murri

Giocare con PATH ti apre per eseguire programmi dannosi per errore. Lo standard prevede l'installazione di elementi "locali" in /usr/local (vedi FHS , che codifica l'utilizzo di Unix: un po 'datato ma fornisce una logica)., /usr/local/bin è di solito in PATH per tutti gli utenti.

I miei programmi "installati localmente" sono in $HOME/bin, ambientato nella danza standard di ./configure --prefix=$HOME ..., accoppiato con alcuni alias (bash) da scegliere, ad es. git auto-costruito su quello di sistema (quelli non contrastanti si trovano in PATH alla fine.

1
vonbrand