Можно ли изменить каталог и сохранить его после окончания работы скрипта?
Пытаясь ответитьвопрос для другого пользователяЯ наткнулся на то, что пробудило мое любопытство:
import os
os.chdir('..')
Изменит рабочий каталог, насколько это касается Python, поэтому, если я нахожусь в/home/username/
и я бегуos.chdir('..')
любой последующий код будет работать так, как будто я нахожусь в/home/
, Например, если я тогда сделаю:
import glob
files = glob.glob('*.py')
files
будет список.py
файлы в/home/
а не в/home/username/
, Однако, как только скрипт выйдет, я вернусь в/home/username/
или каталог, из которого я запускал скрипт.
Я обнаружил, что то же самое происходит со сценариями оболочки. Если у меня есть следующий скрипт:
#!/bin/bash
cd /tmp
touch foo.txt
Запуск сценария из/home/username/
создаст файлfoo.txt
в/tmp/
, но когда сценарий закончится, я все равно буду в/home/username/
не/tmp/
.
Мне любопытно, есть ли какая-то фундаментальная причина, почему рабочий каталог не изменяется "навсегда" в этих случаях, и если естьявляется способ изменить его навсегда, например, запустить скрипт с~$ python myscript.py
и иметь терминал, с которого скрипт был запущен, в конце концов, в другом каталоге, когда скрипт завершит выполнение.