Come posso farlo in modo da poter eseguire un programma specifico, semplicemente digitando il suo nome nella console?


17

Ho appena installato Light Table scaricandolo dal repository git e ho seguito le istruzioni su questo sito Web per creare un programma di avvio desktop.

Ora voglio eseguire il programma digitando direttamente nel terminale

LightTable

e non

./opt/LightTable/deploy/LightTable

6
@ user68186 L'aggiunta della directory di contenimento alla PATHvariabile di ambiente spesso non è il modo migliore per raggiungere questo obiettivo e talvolta può persino rompere il sistema o creare vulnerabilità di sicurezza. (Bisogna considerare qualsiasi altro file eseguibile che verrà trasformato in comandi da questo, così come nel punto in cuiPATH viene aggiunto.) Aggiungere un alias di shell, come coperto dalle risposte qui, è meglio per chiunque non voglia considerare tali complessità; è anche più strettamente adattato all'app specifica in questione. Quindi questo non è un duplicato di quella domanda, sebbene si sovrappongano un po '.
Eliah Kagan,

Correlato (ma non necessariamente un duplicato): come posso aggiungere una directory al mio percorso?
Seth,

Risposte:


20

Questo può essere grossolanamente realizzato con un alias. Puoi creare un alias bash permanente aggiungendo una singola riga al tuo .bashrcfile.

In esecuzione terminale nano ~/.bashrc

Aggiungi la seguente riga in fondo:

alias LightTable='/full/path/opt/LightTable/deploy/LightTable'

nota che ti ho aggiunto il percorso completo invece che .così funzionerà in qualsiasi directory di lavoro. Chiudi e riapri il terminale o esegui source ~/.bashrcper ricaricare il file bashrc.


7

Questa non è una domanda elementare, il modo migliore per farlo è fare un alias, Ill usare netbeans come esempio

Terminale aperto Ctrl+Alt+T

nano ~/.bashrc

scrivi questo in fondo al file:

alias netbeans='/home/john/netbeans-7.0.1/bin/netbeans'

Ctrl + x

Y

Enter

La parola netbeans è il comando che userai per avviare il programma, puoi cambiarlo in qualsiasi cosa tu abbia bisogno. All'interno delle virgolette si trova il comando che si desidera eseguire quando viene chiamato l'alias netbeans.

Affinché questo comando sia attivo, è necessario riaprire il Terminale


Non posso votare a causa della mia scarsa reputazione, ma grazie per aver risposto, è stato molto utile
Dapias,

5

Puoi provare a copiare il file eseguibile /usr/binse è un semplice programma eseguibile e non dipende da nessun altro file. se dipende da altri file, la cosa migliore da fare è creare un comando di scelta rapida per il programma.

Dove si crea l'alias è da soli (.bashrc, .profile, ecc.). Tuttavia, lascio personalmente tutte le variabili di ambiente nel mio .bash_aliasesfile (è necessario crearlo a prima vista).

Crea il file .bash_aliases nella cartella HOME e modificalo come preferisci. Quindi per creare il collegamento, puoi fare:

alias LightTable='path_to_opt/LightTable/deploy/LightTable'

Salva il file e il gioco è fatto.

ps: puoi anche mettere l'alias come lighttable e LIGHTTABLE nel caso in cui dimentichi di mettere maiuscola la L o se il maiuscolo è attivo per errore, quindi non è necessario digitare nuovamente il comando.


Non posso votare a causa della mia scarsa reputazione, ma grazie per aver risposto, è stato molto utile
Dapias,

Si consiglia di inserire invece le cose che non sono installate tramite Apt /usr/local/bin. Le cose in /usr/binpossono essere cancellate o sostituite da pacchetti Apt, ma le cose in /usr/local/binvengono lasciate sole.
Chai T. Rex il

3

Non sono sicuro del motivo per cui altri rispondenti non lo abbiano suggerito, ma come effettivamente sottolineato dall'OP, anteponendo alla $PATHvariabile sarebbe stato il modo in cui avrei raggiunto questo obiettivo:

echo 'PATH=/opt/LightTable/deploy:$PATH' >> ~/.bash_profile
source ~/.bash_profile

Quindi eseguire con:

LightTable

Nota: Vorrei quindi alias LightTableper lighttableper facilità d'uso: echo 'alias LightTable=lighttable' >> ~/.bash_alias && source ~/.bash_alias.
Joe Nyland,

2

Meglio creare un collegamento simbolico che un alias credo. Un alias potrebbe effettuare sostituzioni sulla riga di comando quando non ne volevi una; la creazione di un collegamento simbolico ti consentirà di eseguire il programma come desideri:

sudo ln -s full_path_to_opt/LightTable/deploy/LightTable  /usr/local/bin

Questo creerà un collegamento in / usr / local / bin (che dovrebbe essere già nel tuo PERCORSO!) Su dove si trova LightTable. Nota anche che puoi rinominare il collegamento simbolico anche se non ti piacciono le lettere maiuscole in "LightTable":

sudo ln -s full_path_to_opt/LightTable/deploy/LightTable  /usr/local/bin/lighttable

Solo per riferimento, se il programma è progettato in modo scomodo, cioè si lamenta di non trovare file di configurazione o librerie o altro, allora un'altra soluzione che potrebbe essere più utile è la creazione di uno script wrapper. Per fare questo basta creare un file (dove preferisci per il momento) chiamato "LightTable" (o qualunque altra cosa ti piace) con questo in esso:

#!/bin/sh
# Simple script to run LightTable
if ! cd full_path_to_opt/LightTable/deploy/LightTable ; then
    echo "$0: error: LightTable directory not found." >&2
    exit 1
fi
exec ./LightTable

Modifica le autorizzazioni di questo file:

chmod 755 <wrapper_script>

e prova a eseguirlo solo per vedere se funziona e, in tal caso, spostalo in / usr / local / bin:

sudo mv -i <wrapper_script> /usr/local/bin

Quello che dici è vero, ma non ha risposto a quello che voleva. Voleva eseguirlo usando il nome del file / alias del file
Johnn,

1
@Johnn: mi dispiace, non capisco qual è la differenza. Capisco la domanda come chiedere un modo per eseguire il programma senza dover specificare il suo percorso. Se la shell utilizza un alias o il meccanismo PATH non fa alcuna differenza se si sta semplicemente chiedendo di eseguire il programma. Se volevi fare qualcos'altro con il file, usare un alias per fornire il percorso completo del file è davvero il modo migliore, ma vuole solo eseguire il file. Mi sbaglio?
Zorawar,

No, è stata colpa mia, è corretta.
Johnn,

1
@Johnn: Ah, beh, grazie comunque per l'occhio critico!
Zorawar,

0

Ho provato a farlo, quando ho iniziato con Ubuntu. Quando metti LightTable nel terminale Cerca un file chiamato LightTable nelle $PATHdirectory. puoi mettere echo $PATHper ottenere le directory.

Se vuoi eseguire il tuo programma LightTable in ./opt/LightTable/deploy/LightTable, allora quello che devi fare è posizionare il tuo file Light Table in /usr/games or /usr/bin.Ma che richiede autorizzazioni Super User

apri il terminale con Ctrl + Alt + T

poi mettere

Preferisco creare una scorciatoia di LightTable usando

sudo ln -s path/to/LightTable  /usr/games/LightTable

Quindi inserire la password SU. Quindi, è possibile accedere al programma utilizzando LightTablenel terminale

Puoi mettere /usr/bino /usr/local/bininvece di /usr/gamestutto ciò che è una $PATHdirectory, non è necessario che sia così, ma ti consiglio di inserirlo in/usr/local/bin

Ti consiglio anche di modificare il file di output come lightpathanzichéLightPath

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.