我喜欢在python或bash中做类似的事情,程序转换给定的文件路径并移动当前的shell。
ulka:~/scc/utils$ python prog.py some_path1
ulka:some_path2$
这里
some_path1 -> prog.py -> some_path2
我尝试使用subprocess.call或os.chdir,但它不起作用,任何想法都会受到赞赏。
答案 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。)