从python或shell脚本更改工作目录

时间:2017-03-21 20:30:24

标签: python bash shell

我喜欢在python或bash中做类似的事情,程序转换给定的文件路径并移动当前的shell。

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

这里

some_path1 -> prog.py -> some_path2

我尝试使用subprocess.call或os.chdir,但它不起作用,任何想法都会受到赞赏。

2 个答案:

答案 0 :(得分:2)

由于python在自己的进程中运行,因此无法更改shell的当前目录。但是,您可以这样做:

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"
}

答案 1 :(得分:1)

如果使用source.运行shell脚本,则可以更改shell的当前工作目录。如果您像这样运行脚本,则只需cd命令即可​​。如果您正在运行没有source.的shell脚本,或者如果您正在运行任何不是shell脚本的shell脚本,那么就没有好办法,而且您将被迫诉诸讨厌的黑客,比如使用调试器注入流程(不推荐,但如果你真的必须这样做,请参阅How do I set the working directory of the parent process?和/或https://unix.stackexchange.com/questions/281994/changing-the-current-working-directory-of-a-certain-process。)