¿Cómo usar ln -s para crear un acceso directo de línea de comando?

11

Tengo un archivo sh que me gustaría poder abrir desde la terminal en cualquier momento. Me gustaría escribir "studio" en la terminal y tener abierto android studio

Recuerdo haber usado ln -spara hacer esto, pero he olvidado y ya he perdido mucho tiempo buscando en la web.

Además, ¿en qué directorio se guarda el enlace simbólico creado?

Aquí está la sintaxis de mi esfuerzo, comando no encontrado

ricardo@debian:~$ ln -s /opt/android-studio/bin/studio.sh studio
ricardo@debian:~$ studio
bash: studio: command not found
rickyjoepr
fuente
tratar ./studio.
Sebastian
Quiero hacer un enlace a ./studio que pueda abrir desde cualquier lugar simplemente escribiendo en studio o banana
rickyjoepr
Si desea ejecutar el script desde cualquier lugar utilizando studiosolo, debe colocar el enlace en un lugar que el shell está buscando. El shell busca todo dentro echo $PATH. Puede cambiar $PATHo poner el enlace en uno de los directorios de $PATH. ¿Qué prefieres?
Sebastian
44
@Sebastian Utilice las respuestas para responder preguntas, no comentarios. Y, por favor, no sugiera eliminar preguntas después de que hayan sido respondidas. Estamos aquí para construir un repositorio de respuestas que permanecen y son útiles para futuros visitantes.
Gilles 'SO- deja de ser malvado'
1
Puede que le guste el aliascomando, que se usa comúnmente en lugar de crear enlaces simbólicos para acortar los nombres de los comandos.
Winny

Respuestas:

10

El comando que ejecutó creó un enlace simbólico en el directorio actual. A juzgar por el aviso, el directorio actual es su directorio de inicio. Crear enlaces simbólicos a programas ejecutables en su directorio de inicio no es particularmente útil.

Cuando escribe el nombre de un programa, el shell lo busca en los directorios enumerados en la PATHvariable de entorno . Para ver el valor de esta variable, ejecute echo $PATH. Los directorios están separados por dos puntos ( :). Un camino típico es /home/ricardo/bin:/usr/local/bin:/usr/bin:/binpero hay mucha variación por ahí.

Debe crear este enlace simbólico en uno de los directorios enumerados en $PATH. Si desea que el comando esté disponible para todos los usuarios, cree el enlace en /usr/local/bin:

sudo ln -s /opt/android-studio/bin/studio.sh /usr/local/bin/studio

Si desea que el comando esté disponible solo para usted (que es la única posibilidad si no tiene privilegios de administrador), cree el enlace en ~/bin(el binsubdirectorio de su directorio de inicio).

ln -s /opt/android-studio/bin/studio.sh ~/bin/studio

Si su distribución no se incluye /home/ricardo/binen su PATH(donde /home/ricardoestá su directorio de inicio), créelo primero con mkdir ~/bin, y agréguelo a su PATHagregando la siguiente línea a ~/.profile(cree el archivo si no existe):

PATH=~/bin:$PATH

El .profilearchivo se lee cuando . ~/.profileinicia sesión. Puede leerlo en el terminal actual ejecutando (esto solo se aplica a los programas iniciados desde ese terminal).

Gilles 'SO- deja de ser malvado'
fuente
1
+1 pero como comentario de Winny, creo que un alias ~/.bashrcsería más directo.
Sparhawk
@Sparhawk Un alias solo funcionaría para invocar el programa desde un shell interactivo, no desde un script, un acceso directo de escritorio o cualquier otro programa.
Gilles 'SO- deja de ser malvado'
1
Es cierto, pero la pregunta dice I would like to type "studio" into the terminal, y esto está implícito en el título y los comandos citados.
Sparhawk
1

La forma más intuitiva de implementar su deseo es usar un alias. Tipo:

alias studio=/opt/android-studio/bin/studio.sh

o ingrese un alias relacionado en .profile o mejor: lo que su shell usa como $ ENV.

Tenga en cuenta que aún puede necesitar agregar

/opt/android-studio/bin

a su RUTA para poder usar el software. Lo mejor es probar primero si funciona sin una RUTA extendida.

astuto
fuente