![¿Cómo crear comandos bash personalizados? (ejecutando archivos python, perl, ruby)](https://rvso.com/image/1604254/%C2%BFC%C3%B3mo%20crear%20comandos%20bash%20personalizados%3F%20(ejecutando%20archivos%20python%2C%20perl%2C%20ruby).png)
Me gustaría utilizar ciertas herramientas que se ejecutan en Python/Perl/Ruby. Por ejemplo, myProgram.py
se almacena en ~/carpeta1/carpeta2/. Me gustaría ejecutarlo con entradas de bash como >>> myProgram -h
.
Hasta ahora, he leído acerca de 2 formas de hacer algo similar:
- Cree archivos en un directorio bin:
# in /bin/
~/folder1/folder2/myProgram
# this works when the target is a bash program
- Editar
~/.bashrc
para un alias permanente:
# in ~/.bashrc
alias myProgram='python ~/folder1/folder2/myProgram.py'
Desafortunadamente, la primera forma no parece funcionar con archivos que no sean bash (hasta donde lo he probado), y la segunda opción simplemente devuelve un error como myProgram: command not found
.
¿Cómo debo crear comandos bash para acceder rápidamente a mis herramientas Python/Perl/Ruby con entrada con los comandos?
Respuesta1
Para ejecutar tus scripts así necesitas tres cosas:
- El script debe estar en el directorio que aparece en su
$PATH
variable. Si coloca scripts en~/bin
, para ejecutarlos sin especificar la ruta completa al archivo cada vez que inicie sesión, debe extender la ruta.bashrc
agregando la siguiente líneaexport PATH=$PATH:~/bin
. Para ver qué directorios ya están en su ruta, simplemente imprimaloecho $PATH
. Para realizar cualquier cambio en.bashrc
el archivo, necesita volver a iniciar sesión (o volver a ejecutar bash). - El script debe tener establecido el permiso de bits ejecutables. Para hacerlo ejecute el comando
chmod +x /path/to/script
- El script debe indicar qué intérprete utilizar para ejecutarlo. Para eso se utiliza una primera línea especial en el script llamada shebang:
#!/path/to/interpreter
. Para Python eso será#!/usr/bin/python
. Como diferentes sistemas operativos pueden tener archivos binarios en diferentes lugares, se recomienda utilizar shebang en un formulario#!/usr/bin/env python
que ejecutará el intérprete de Python predeterminado sin importar dónde se encuentre.
ACTUALIZACIÓN: Según los comentarios, estoy actualizando esta respuesta con enlaces simbólicos. Si solo desea que las herramientas que ya tiene instaladas sean más accesibles, no es necesario que cree scripts. Sólo necesita encontrar el ejecutable de esa herramienta (o si es un script, hacerlo ejecutable si ya no lo es) y luego colocar el enlace simbólico (ver man ln
) en el directorio de su $PATH (o agregar el directorio con el ejecutable a su $ CAMINO).
NOTA: Simplemente hacer que el script sea ejecutable (ver 2.) y agregarlo alias
también .bashrc
funcionará, pero es bastante inconveniente agregar un nuevo alias cada vez que crea un nuevo script.