¿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?

grerdas
fuente
¿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.

mj.scintilla
fuente
¿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.

RobotHumanos
fuente
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.

Vinay
fuente