¿Cómo crear comandos bash personalizados? (ejecutando archivos python, perl, ruby)

¿Cómo crear comandos bash personalizados? (ejecutando archivos python, perl, ruby)

Me gustaría utilizar ciertas herramientas que se ejecutan en Python/Perl/Ruby. Por ejemplo, myProgram.pyse 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:

  1. Cree archivos en un directorio bin:
# in /bin/
~/folder1/folder2/myProgram
# this works when the target is a bash program
  1. Editar ~/.bashrcpara 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:

  1. El script debe estar en el directorio que aparece en su $PATHvariable. Si coloca scripts en ~/bin, para ejecutarlos sin especificar la ruta completa al archivo cada vez que inicie sesión, debe extender la ruta .bashrcagregando la siguiente línea export PATH=$PATH:~/bin. Para ver qué directorios ya están en su ruta, simplemente imprimalo echo $PATH. Para realizar cualquier cambio en .bashrcel archivo, necesita volver a iniciar sesión (o volver a ejecutar bash).
  2. El script debe tener establecido el permiso de bits ejecutables. Para hacerlo ejecute el comandochmod +x /path/to/script
  3. 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 pythonque 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 aliastambién .bashrcfuncionará, pero es bastante inconveniente agregar un nuevo alias cada vez que crea un nuevo script.

información relacionada