xonsh中.xonshrc里os.chdir()路径显示异常及cd命令问题求助
问题解释
xonsh作为兼容Python的shell,维护着独立的内部路径状态,和Python标准库的os.chdir()属于两套机制。在.xonshrc中调用os.chdir()时,仅修改了系统级工作目录,但xonsh的shell环境未同步这个变化:
- 提示符显示的是xonsh缓存的初始主目录路径,直到执行命令或回车触发状态刷新,才会显示真实路径
- 第一个
cd命令基于xonsh缓存的旧路径计算目标位置,因此无法正确跳转
解决方案
两种可靠修复方式,任选其一即可:
方式1:用xonsh内置cd命令替代os.chdir()
直接使用xonsh原生cd命令,它会同时更新系统工作目录与xonsh内部状态:
cd "/etlsmart/feeds/ibmc_reminder"
方式2:手动同步xonsh路径状态
若必须保留os.chdir()调用,在执行后手动触发xonsh更新内部路径缓存:
import os os.chdir("/etlsmart/feeds/ibmc_reminder") # 同步xonsh内部路径状态 __xonsh__.env['PWD'] = os.getcwd()
验证效果
修改.xonshrc后重启xonsh,提示符会直接显示正确工作目录,第一个cd命令也能正常生效:
[etlsmart@msd-cld-etl-21p ~]$ export PROCESS=ibmc_reminder; /etlsmart/env/xonsh/bin/xonsh etlsmart@msd-cld-etl-21p:/etlsmart/feeds/ibmc_reminder $ cd log etlsmart@msd-cld-etl-21p:/etlsmart/feeds/ibmc_reminder/log $ pwd /etlsmart/feeds/ibmc_reminder/log
内容的提问来源于stack exchange,提问作者zenzic
相关产品推荐
相关产品推荐

