¿Cómo ejecutar el script de Python desde la consola sin escribir la ruta completa?


8

Tengo algunas secuencias de comandos de Python en / usr / share / scripts / que uso con frecuencia, y quiero poder ejecutarlas simplemente escribiendo el nombre y no la ruta completa, ¿cómo podría hacer esto?

echo $ PATH me muestra:

/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/opt/real/RealPlayer

Así que intenté escribir en la terminal:

PATH="/usr/share/scripts/:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/opt/real/RealPlayer"
export

No se muestran errores y echo $ PATH ahora muestra la ruta de mi nueva secuencia de comandos, pero cuando ejecuto scriptName obtengo el comando no encontrado.

¿Qué estoy haciendo mal?


¿Cómo lo hiciste bien antes?
— Ignacio Vazquez-Abrams

No lo hice antes.
— grerdas

¿No los corriste? Pensé que habías dicho que los usabas a menudo ...
— Ignacio Vázquez-Abrams

@Ignacio Vazquez-Abrams: Oh, no entendí tu pregunta, lo siento, las ejecuté como "/usr/share/scripts/scriptName.py args"
— grerdas

Respuestas:


9

Establezca permisos ejecutables para scripts de python mediante "chmod + x *".
Ahora tiene dos opciones:

  • Agregue su directorio de scripts a la variable PATH env, o
  • Haga enlaces simbólicos a sus guiones uno por uno (o escriba otro guión para hacer lo mismo) en el /usr/local/bindirectorio.

Ejemplo:
[mzed@node02 test]$ vim printme.py

Contenido del archivo:

#!/usr/bin/python
print "This is cool!"

-

[mzed@node02 test]$ mv printme.py printme
[mzed@node02 test]$ chmod +x printme
[mzed@node02 ~]$ cd /usr/local/bin/
[mzed@node02 bin]$ sudo ln -s ~/test/printme .
[mzed@node02 bin]$ ls
deskzilla  grails  grails-debug  printme  startGrails
[mzed@node02 bin]$ cd
[mzed@node02 ~]$ printme 
This is cool!
[mzed@node02 ~]$

Espero que esto ayude.


¿Alguna posibilidad de hacer una versión para Windows? (Sé que esta es una pregunta de Linux)
— Iulian Onofrei

1

De acuerdo, tal vez solo soy una escuela más antigua ...
En / usr / bin agregue scripts de shell con el encabezado #! / Bin / bash y sin extensión .sh. Luego, en esos scripts, simplemente ejecute python absolutepath.

Por qué creo que es mejor que las otras respuestas:
no requiere modificar sus scripts para que sean ejecutables.
No requiere renombrar sus scripts.


No te olvides de los args.
— juanitogan

0

Perdón por sugerir algo básico ... ¿Intentaste "scriptname.py", en lugar de solo "scriptname"?

Además, todos los scripts deben tener permisos de ejecución (puede hacerlo emitiendo "chmod + x script.py"). A juzgar por su comentario anterior, ya que los ha ejecutado como "/ usr / share / scripts / scriptName. py args ", deberían tener permisos de ejecución.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.