É possível alterar o diretório e as alterações persistem quando o script termina?
Ao tentar responderuma pergunta para outro usuário, Me deparei com algo que despertou minha curiosidade:
import os
os.chdir('..')
Mudará o diretório de trabalho no que diz respeito ao Python, por isso, se eu estiver em/home/username/
e eu corroos.chdir('..')
, qualquer código subsequente funcionará como se eu estivesse em/home/
. Por exemplo, se eu fizer:
import glob
files = glob.glob('*.py')
files
será uma lista de.py
arquivos em/home/
ao invés de/home/username/
. No entanto, assim que o script terminar, voltarei a/home/username/
ou em qualquer diretório em que eu executei o script originalmente.
Eu descobri que o mesmo acontece com scripts de shell. Se eu tiver o seguinte script:
#!/bin/bash
cd /tmp
touch foo.txt
Executando o script de/home/username/
criará um arquivofoo.txt
no/tmp/
, mas quando o script terminar, ainda estarei em/home/username/
não/tmp/
.
Estou curioso para saber se existe algum motivo fundamental pelo qual o diretório de trabalho não é alterado "permanentemente" nesses casos e se existeé uma maneira de alterá-lo permanentemente, por exemplo, para executar um script com~$ python myscript.py
, e faça com que o terminal em que o script foi executado termine em um diretório diferente quando o script concluir a execução.