Quiero obtener el verdadero valor del argv [0] del sistema operativo en un programa de Python. Python's sys.argv [0] no es este valor: es el nombre del script de Python que se está ejecutando (con algunas excepciones). Lo que quiero es un foo.py que imprimirá "somestring" cuando se ejecuta como¿Cómo se puede obtener el argv del sistema operativo [0] (no sys.argv [0]) en Python?
El programa trivial
#! /usr/bin/env python
import sys
print sys.argv[0]
imprimirá "foo.py" en su lugar.
¿Alguien sabe cómo obtener esto? Hay algunas funciones relacionadas en la API de Python C: p. Py_GetProgramName. Pero esto no parece estar expuesto al mundo de Python en ninguna parte. Py_GetProgramFullPath funciona fuera de argv [0] pero lo intenta obtener una ruta a un intérprete de Python. (Este valor se propaga a sys.executable, por lo que esa variable tampoco está bien.) ¿Realmente tengo que escribir un módulo C para obtener este valor?
Editar: También se le preguntó (pero no respondió amablemente) here.
No es un error de bash, el comando 'exec' reemplaza el shell con otro programa. – interjay
Ooh, tortuoso. No me sorprendería si esto tuviera problemas de portabilidad, pero es bueno para mí. – pkgw
@interjay Ya veo, ¡gracias! – vz0