2017-03-21 3 views
1

Ich mag so etwas in Python oder Bash, wo das Programm den angegebenen Dateipfad transformieren und die aktuelle Shell verschieben.Ändern Arbeitsverzeichnis von Python oder Shell-Skript

ulka:~/scc/utils$ python prog.py some_path1 
ulka:some_path2$ 

Hier

some_path1 -> prog.py -> some_path2 

ich mit subprocess.call oder os.chdir versucht, aber es hat nicht funktioniert, wird jede Idee dankbar.

+2

können Sie das nicht tun. 'cd' ist eingebaut. –

+1

Ihr Python-Code wird in einem eigenen untergeordneten Prozess ausgeführt. Es kann seinen übergeordneten Prozess nicht "cd" –

Antwort

2

Da Python in einem eigenen Prozess ausgeführt wird, kann das aktuelle Verzeichnis Ihrer Shell nicht geändert werden. Aber Sie so etwas wie dies tun könnten:

change_path() { 
    # prog.py figures out the real path that you want and prints 
    # it to standard output 
    local new_path=$(python prog.py some_path1) # could use an argument "$1" 
    cd "$new_path" 
} 
+0

Großartig, ich mag diese Idee. – Ulka

+0

nette Lösung für ein fast unmögliches Problem. @Ulka akzeptieren die Antwort, wenn Sie denken, es ist der beste. –

1

Es ist möglich, dass ein Shell-Skript IhrDeterm Shell aktuellen Arbeitsverzeichnis zu ändern, wenn Sie es mit source oder . laufen. Wenn Sie Ihr Skript wie folgt ausführen, genügt ein Befehl cd. Wenn Sie ein Shell-Skript ohne source oder . ausführen oder wenn Sie etwas ausführen, das kein Shell-Skript ist, dann gibt es keinen guten Weg, es zu tun, und Sie wären gezwungen, auf fiese Hacks wie das Einspritzen in die Prozess mit einem Debugger (nicht empfohlen, aber siehe How do I set the working directory of the parent process? und/oder https://unix.stackexchange.com/questions/281994/changing-the-current-working-directory-of-a-certain-process, wenn Sie dies wirklich tun müssen).

Verwandte Themen