如何以 shell 依赖格式获取 cwd?

Posted

技术标签:

【中文标题】如何以 shell 依赖格式获取 cwd?【英文标题】:How to get the cwd in a shell-dependend format? 【发布时间】:2016-05-18 08:02:58 【问题描述】:

由于我同时使用 Windows 的 cmd.exe 和 msysgit 的 bash,因此尝试访问 os.getcwd() 的 Windows 路径输出会导致 Python 尝试访问以驱动器号开头的路径,并且冒号,例如C:\bash 正确地确定了一个无效的 unix 路径,在这个例子中它应该以 /c/ 开头。但是如何修改 Windows 路径以使其成为 msys-equivalent iff 脚本在 bash 内运行?

【问题讨论】:

相关:How to run a script which can determine whether cmd.exe or gnu mingw shell is running 【参考方案1】:

丑陋但应该可以工作,除非您为 Windows 创建环境变量 SHELL=bash

def msysfy(dirname):
    import os
    try:
        shell = os.environ['SHELL']
    except KeyError:  # by default, cmd.exe has no SHELL variable
        shell = 'win'
    if os.path.basename(shell)=='bash' and dirname[1] == ':':
        return '/' + dirname[0].lower() + '/' + dirname[2:]
        # don't worry about the other backslashes, msys handles them
    else:
        return dirname

【讨论】:

以上是关于如何以 shell 依赖格式获取 cwd?的主要内容,如果未能解决你的问题,请参考以下文章

执行脚本时如何设置不同的工作目录? [复制]

如何以编程方式获取有状态的 ssh shell 会话?

获取shell脚本目录的父目录[重复]

python 如何调用带参数的shell脚本

如何检查 pom.xml 以获取更新的依赖项

调用 erl_tar:create 函数时如何更改 cwd(当前工作目录)?