pwd来自python的bash扩展符号链接

jcu*_*bic 1 python bash shell interpreter pwd

我有一个shell,我使用pwd显示我在哪个目录.但是当我在目录中它是一个符号链接时,它显示原始目录而不是符号链接

import subprocess as sub

def execv(command, path):
    p = sub.Popen(['/bin/bash', '-c', command],
                    stdout=sub.PIPE, stderr=sub.STDOUT, cwd=path)
    return p.stdout.read()[:-1]
Run Code Online (Sandbox Code Playgroud)

如果我有文件夹/home/foo/mime,那么/usr/share/mime当我打电话时它是符号链接

execv('pwd', '/home/foo/mime')
Run Code Online (Sandbox Code Playgroud)

我得到/ usr/share/mime

我的shell代码如下所示:

    m = re.match(" *cd (.*)", form['command'])
    if m:
        path = m.group(1)
        if path[0] != '/':
            path = "%s/%s" % (form['path'], path)
        if os.path.exists(path):
            stdout.write(execv("pwd", path))
        else:
            stdout.write("false")
    else:
        try:
            stdout.write(execv(form['command'], form['path']))
        except OSError, e:
            stdout.write(e.args[1])
Run Code Online (Sandbox Code Playgroud)

我有JavaScript的客户端

(可能返回命令和新路径的结果,因为JSON会更好).

有没有办法让pwdsymlink而不是原始目录返回路径.

jll*_*gre 6

只有当前的shell知道它正在使用符号链接来访问当前目录.此信息通常不会传递给子进程,因此它们只通过其实际路径知道当前目录.

如果您希望子进程知道此信息,则需要定义传递它的方法,例如通过参数或环境变量.从shell导出PWD可能会起作用.