¿Es posible cambiar el directorio y que el cambio persista cuando finaliza el script?
Al tratar de responderuna pregunta para otro usuario, Me encontré con algo que despertó mi curiosidad:
import os
os.chdir('..')
Cambiará el directorio de trabajo en lo que respecta a Python, así que si estoy en/home/username/
y corroos.chdir('..')
, cualquier código posterior funcionará como si estuviera en/home/
. Por ejemplo, si luego hago:
import glob
files = glob.glob('*.py')
files
será una lista de.py
archivos en/home/
en lugar de en/home/username/
. Sin embargo, tan pronto como salga el script, volveré a/home/username/
, o cualquier directorio desde el que ejecuté el script originalmente.
He descubierto que sucede lo mismo con los scripts de shell. Si tengo el siguiente script:
#!/bin/bash
cd /tmp
touch foo.txt
Ejecutando el script desde/home/username/
creará un archivofoo.txt
en/tmp/
, pero cuando el guión termine, todavía estaré en/home/username/
no/tmp/
.
Tengo curiosidad si hay alguna razón fundamental por la cual el directorio de trabajo no se cambia "permanentemente" en estos casos, y si hayes una forma de cambiarlo permanentemente, por ejemplo, para ejecutar un script con~$ python myscript.py
, y haga que el terminal desde el que se ejecutó el script termine en un directorio diferente cuando el script termine de ejecutarse.