我创建了一个很酷的python程序,可以帮助人们以交互方式导航到其他目录。当他们到达那里我想让他们点击Enter并退出程序,将他们留在选定的目录中。但是,你总是在b / c中开始的同一个目录中只有python运行的子进程实际更改了目录和父进程'目录保持不变。
答案 0 :(得分:2)
不是直接运行程序,而是提供包装脚本。您的程序完成后,向包装器脚本发出cd
到哪个目录的信号。源代码包装器脚本执行cd
。
另一个文件浏览工具Midnight Commander(mc
)解决了同样的问题。这是它的包装脚本:
MC_USER=`id | sed 's/[^(]*(//;s/).*//'`
MC_PWD_FILE="${TMPDIR-/tmp}/mc-$MC_USER/mc.pwd.$$"
/usr/bin/mc -P "$MC_PWD_FILE" "$@"
if test -r "$MC_PWD_FILE"; then
MC_PWD="`cat "$MC_PWD_FILE"`"
if test -n "$MC_PWD" && test -d "$MC_PWD"; then
cd "$MC_PWD"
fi
unset MC_PWD
fi
rm -f "$MC_PWD_FILE"
unset MC_PWD_FILE
如您所见,这定义了一个临时文件,并使用mc
选项将该文件名传递给-P
。在退出mc
之前,它会将所选目录写入该临时文件。此脚本将该临时文件和cd读取到所选目录。
为了方便运行这个包装器脚本,可以创建一个shell别名:
alias mc=". /usr/lib/mc/bin/mc-wrapper.sh"'
稍作修改,我希望您可以使用您的程序。