Come posso rendere un programma eseguibile da qualsiasi luogo


76

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 nella /bincartella?


5
no, dovresti usare la variabile PATH della shell.
msw,

7
Penso che andrebbe bene creare una ~/bin/cartella personale , aggiungere QUESTO al tuo percorso e creare collegamenti simbolici in quella cartella a tutto ciò che volevi fosse eseguibile da qualsiasi luogo.
frabjous

1
È inoltre possibile impostare un alias con il percorso completo del file binario che si desidera eseguire.
datasmurf,

Risposte:


53

Se digiti semplicemente 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>al tuo file ~ / .bashrc (alla fine va bene).


11
Grazie funziona. Per i neofiti come me, ricordati di omettere le parentesi angolari <>. In questo modo: $ PATH: / your / file / path
Sal

4
Inoltre, non includere il nome del file di programma stesso nel percorso.
Olli Niemitalo,

23

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 da solo?

È 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 mettere 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.


15

Inserire un collegamento al file nella /bindirectory 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.
  • L' /binelenco dovrebbe essere riservata per i programmi che sono necessari per l'esecuzione del sistema (le 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 aggiungerlo ~/bin/alla mia PATHvariabile di ambiente. Trovo più facile tenere traccia dei programmi che ho installato in quel modo, perché è separato dal resto del sistema.


6

Se vuoi eseguire un comando foonella directory in cui si trova la tua shell, in pratica hai due opzioni:

  1. Digitare ./fooal prompt della shell.

  2. Aggiungi la .directory ( .è un nome per "la directory corrente") alla PATHvariabile d'ambiente; 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 cdessere indirizzato /tmpe un utente malintenzionato ha creato un binario malware chiamato lslì.


2
sì, penso che le opzioni ti mostrino che unix ti consente di fare le cose, che è considerata una cattiva pratica. Aggiunta al tuo percorso può anche creare altri effetti collaterali che sono generalmente cattivi.
Unix Janitor,

1

Fare casino con PATHti apre per eseguire programmi dannosi per errore. Lo standard è di installare roba "locale" sotto /usr/local(vedi FHS , che codifica l'utilizzo di Unix: un po 'datato ma fornisce una logica). Di /usr/local/binsolito è PATHper tutti gli utenti.

I miei programmi "installati localmente" sono $HOME/bininseriti, impostati nella danza standard di ./configure --prefix=$HOME ..., insieme ad alcuni alias (bash) per individuare ad esempio git auto-costruito sul sistema uno (quelli che non si scontrano si trovano PATHalla fine.

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.