Esistono due modi per consentirti di eseguire il binario senza specificarne il percorso (esclusa la creazione di alias o funzioni di shell per eseguirlo con un percorso assoluto per te):
- Copialo in una directory che si trova nel tuo
$PATH
. - Aggiungi la directory in cui si trova al tuo
$PATH
.
Per copiare il file in una directory nel tuo percorso, ad esempio /usr/local/bin
(dove dovrebbe andare il software gestito localmente), devi avere i privilegi di superutente, il che di solito significa usare sudo
:
$ sudo cp -i mybinary /usr/local/bin
Bisogna fare attenzione a non sovrascrivere alcun file esistente nella directory di destinazione (questo è il motivo per cui ho aggiunto -i
qui).
Per aggiungere una directory al tuo $PATH
, aggiungi una riga nel tuo ~/.bashrc
file (se stai usando bash
):
PATH="$HOME/bin:$PATH"
... se il binario è in $HOME/bin
.
Ciò ha il vantaggio che non è necessario disporre dei privilegi di superutente o modificare/aggiungere nulla nel sistema di base sulla propria macchina. Devi solo spostare il binario nel bin
directory della tua home directory.
Nota, modifiche a .bashrc
ha effetto quando il file viene prelevato la volta successiva, il che accade se apri un nuovo terminale o ti disconnetti e rientri o esegui source ~/.bashrc
manualmente.
Dovresti leggere di più sulla variabile PATH. Sospetto fortemente che dovresti usarlo (o modificarlo) in modo appropriato.
Voglio essere in grado di inserirlo nella directory bin
Immagino tu intenda /bin/
o /usr/bin/
. Non sono sicuro che sia saggio aggiungere i tuoi programmi lì. Forse sarebbe meglio inserire un collegamento simbolico al loro interno (ad esempio utilizzando qualcosa come ln -sv $(realpath foobar.out) /usr/bin/
), se vuoi assolutamente che il tuo programma appaia lì (il che IMHO è probabilmente un errore dato che stai facendo confusione con il gestore di pacchetti della tua distribuzione).
Probabilmente sta installando il tuo programma in /usr/local/bin/
è molto più saggio (lasciare sia /bin/
e /usr/bin/
intatto, come fornito e gestito dalla tua distribuzione Linux). Consulta LSB e leggi ulteriori informazioni sullo standard di gerarchia dei file.
... come i comandi a livello di sistema, ad esempio ....
cd
Questo è un forte malinteso da parte tua (nella variante originale della tua domanda, hai giustamente rimosso cd
dopo). cd
non è e non può essere un eseguibile, è (e deve essere) un comando integrato della tua shell.
Potresti voler leggere la Programmazione Linux avanzata scaricabile gratuitamente per capire perché cd
non può essere un eseguibile (la directory di lavoro corrente fa parte dello stato di ogni processo, e ogni processo ne ha una propria e potrebbe cambiarla usando chdir(2)...)
install /path/to/oobar.out /usr/local/bin/