¿Cómo puedo hacerlo para poder ejecutar un programa específico, simplemente escribiendo su nombre en la consola?

17

Recientemente instalé Light Table descargándolo del repositorio de git, y seguí las instrucciones en este sitio web para crear un lanzador de escritorio.

Ahora quiero ejecutar el programa escribiendo directamente en el terminal

LightTable

y no

./opt/LightTable/deploy/LightTable
dapias
fuente
66
@ user68186 Agregar el directorio contenedor a la PATHvariable de entorno a menudo no es la mejor manera de lograr esto, y en ocasiones incluso puede romper el sistema o crear vulnerabilidades de seguridad. (Hay que considerar otros archivos ejecutables que se pueden convertir en órdenes de este, así como en el de PATHque éste se agrega.) Adición de un alias de concha, como cubierto por respuestas aquí, es mejor para cualquier persona que no quiere tener en cuenta estas complejidades; También se adapta más estrechamente a la aplicación específica en cuestión. Por lo tanto, este no es un duplicado de esa pregunta, aunque se superponen un poco.
Eliah Kagan
Relacionado (pero no necesariamente un duplicado): ¿Cómo agrego un directorio a mi ruta?
Seth

Respuestas:

20

Esto puede lograrse crudamente con un alias. Puede crear un alias bash permanente agregando una sola línea a su .bashrcarchivo.

En la terminal correr nano ~/.bashrc

Agregue la siguiente línea en la parte inferior:

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

Observe que agregué la ruta completa en lugar de la, .por lo que funcionará en cualquier directorio de trabajo. Cierre y vuelva a abrir el terminal o ejecute source ~/.bashrcpara volver a cargar el archivo bashrc.

Dan
fuente
7

Esta no es una pregunta elemental, la mejor manera de hacer esto es hacer un alias, usaré netbeans como ejemplo

Terminal abierta Ctrl+Alt+T

nano ~/.bashrc

escribe esto al final del archivo:

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

Ctrl + x

Y

Enter

La palabra netbeans es el comando que usará para iniciar el programa, puede cambiarlo a lo que necesite. Dentro de las comillas se encuentra el comando que desea ejecutar cuando se llama alias de netbeans.

Para que este comando esté activo, debe volver a abrir la Terminal

Johnn
fuente
No puedo votar debido a mi baja reputación, pero gracias por responder, fue muy útil
dapias
5

Puede intentar copiar el ejecutable /usr/binsi es un programa ejecutable simple y no depende de ningún otro archivo. Si depende de otros archivos, lo mejor es crear un comando de acceso directo al programa.

Donde crea el alias es usted mismo (.bashrc, .profile, etc.). Sin embargo, personalmente dejé todas mis variables de entorno en mi .bash_aliasesarchivo (es necesario crearlo en la primera posición).

Cree el archivo .bash_aliases en su carpeta HOME y edítelo como desee. Luego, para crear el acceso directo, puede hacer:

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

Guarda el archivo y listo.

ps: también puedes poner el alias como lighttable y LIGHTTABLE en caso de que olvides poner en mayúscula la L o si el bloqueo de mayúsculas está activo por accidente, para que no tengas que volver a escribir el comando.

Geo
fuente
No puedo votar debido a mi baja reputación, pero gracias por responder, fue muy útil
dapias
En su lugar, se recomienda poner cosas que no están instaladas a través de Apt /usr/local/bin. Las cosas /usr/binpueden ser borradas o reemplazadas por paquetes Apt, pero las cosas /usr/local/binse dejan solas.
Chai T. Rex
3

No estoy seguro de por qué otros respondedores no han sugerido esto, pero como el OP realmente señaló, anteponer a la $PATHvariable habría sido la forma en que lo habría logrado:

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

Luego corre con:

LightTable
JoeNyland
fuente
Nota: lo haría a continuación, alias LightTablea lighttablela facilidad de uso: echo 'alias LightTable=lighttable' >> ~/.bash_alias && source ~/.bash_alias.
JoeNyland
2

Creo que es mejor crear un enlace simbólico que un alias. Un alias puede hacer sustituciones en su línea de comando cuando no desea una; crear un enlace simbólico le permitirá ejecutar el programa como desee:

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

Esto creará un acceso directo en / usr / local / bin (que ya debería estar en su RUTA) a donde está realmente LightTable. Tenga en cuenta también que también puede cambiar el nombre del enlace simbólico si no le gustan las letras mayúsculas en "LightTable":

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

Solo como referencia, si el programa está diseñado de manera extraña, es decir, se queja de no encontrar archivos de configuración o bibliotecas o lo que sea, entonces otra solución que podría ser más útil es crear un script de envoltura. Para hacer esto, solo crea un archivo (donde quieras por el momento) llamado "LightTable" (o lo que quieras) con esto en él:

#!/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

Cambia los permisos de este archivo:

chmod 755 <wrapper_script>

e intente ejecutarlo solo para ver si funciona, y si es así, muévalo a / usr / local / bin:

sudo mv -i <wrapper_script> /usr/local/bin
Zorawar
fuente
Lo que dices es cierto, pero no respondió lo que quería. Quería ejecutarlo usando el nombre del archivo / alias del archivo
Johnn
1
@ John: Lo siento, no entiendo cuál es la diferencia. Entiendo la pregunta como pedir una forma de ejecutar el programa sin tener que especificar su ruta. Si el shell utiliza un alias o el mecanismo PATH no hace ninguna diferencia si solo está solicitando ejecutar el programa. Si desea hacer algo más con el archivo, entonces usar un alias para proporcionar la ruta completa del archivo es, de hecho, la mejor manera, pero solo quiere ejecutar el archivo. ¿Estoy equivocado?
Zorawar
No, eso fue mi culpa, estás en lo correcto.
Johnn
1
@ John: Ah, bueno, ¡gracias por el ojo crítico de todos modos!
Zorawar
0

Traté de hacer esto, cuando comencé en Ubuntu. Cuando pones LightTable en la terminal Busca un archivo llamado LightTable en los $PATHdirectorios. puedes poner echo $PATHpara obtener los directorios.

Si desea ejecutar su programa LightTable ./opt/LightTable/deploy/LightTable, entonces lo que tiene que hacer es colocar su archivo Light Table en /usr/games or /usr/bin.Pero eso requiere permisos de superusuario

abre la terminal con Ctrl + Alt + T

luego poner

Prefiero crear un acceso directo de LightTable usando

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

Luego ingrese la contraseña SU. Luego, puede acceder a su programa utilizando LightTableen la terminal

Puede poner /usr/bino en /usr/local/binlugar de /usr/gamescualquier cosa que sea un $PATHdirectorio. No es necesario que sea así, pero le recomiendo que lo coloque en/usr/local/bin

También te recomiendo cambiar el archivo de salida como en lightpathlugar deLightPath

Prashanth Sriram
fuente