Linux 如何在命令行中从相对路径获取绝对路径

Linux 如何在命令行中从相对路径获取绝对路径,linux,path,relative-path,absolute-path,Linux,Path,Relative Path,Absolute Path,我运行这个命令“httpd-d./inst2-kstart”来启动Apache服务器,我可以通过“ps-ef | grep httpd”看到这个命令行。我的问题是如果我不知道绝对路径,有没有办法得到“/inst2”的绝对路径 感谢您可以通过检查伪符号链接/proc/PID/cwd来尝试猜测绝对路径是什么,其中PID可以从ps输出中确定:ls-l/proc/PID/cwd。但是请注意,它只是当前的工作目录,您的路径可能会根据任何其他目录进行解析,因此这只是一个猜测 另一个选项是,如果您的程序使用此

我运行这个命令“httpd-d./inst2-kstart”来启动Apache服务器,我可以通过“ps-ef | grep httpd”看到这个命令行。我的问题是如果我不知道绝对路径,有没有办法得到“/inst2”的绝对路径


感谢您可以通过检查伪符号链接
/proc/PID/cwd
来尝试猜测绝对路径是什么,其中
PID
可以从
ps
输出中确定:
ls-l/proc/PID/cwd
。但是请注意,它只是当前的工作目录,您的路径可能会根据任何其他目录进行解析,因此这只是一个猜测


另一个选项是,如果您的程序使用此相对路径打开某些文件,并且实际上您需要确定这些文件的完整路径,则可以使用
/proc/PID/fd
伪目录枚举某些进程当前打开的文件:
ls-l/proc/PID/fd
。但是,当然,在执行
ls
时,文件已经可以关闭。我不知道如果打开的文件被移动到其他地方会显示什么。

要获得文件/目录的绝对路径,甚至可以在linux上执行以下命令

  • 查找$HOME-键入f-名称“inst2”(用于文件)
  • 查找$HOME-type d-name“inst2”(用于目录)
  • 这可以为您提供任何文件或目录的绝对路径。
    如果文件不在您的家中,请在命令前使用sudo,并将$home替换为/

    Stack Overflow是编程和开发问题的网站。这个问题似乎离题了,因为它与编程或开发无关。请参见帮助中心中的。也许或者会是一个更好的提问的地方。谢谢,我试过了,但它只是显示“/”,然而,这与相对路径无关“/inst2”我做了一些研究,我认为/proc/pid/environ可以做到这一点,你可以在其中找到“PWD=xxx”部分file@sudoAFAIK
    /proc/pid/environ
    列出了流程的环境变量。我担心,
    PWD
    这里只是流程启动时由
    bash
    或其他shell设置的一些变量。但是,至少,这是另一种猜测方式。你能给出一个句子的例子吗“但请注意,它只是当前的工作目录,你的路径可能会根据任何其他目录解析,所以这只是猜测。”在这种情况下,它可以是其他一些不相关的目录?请参阅我在/proc/pid/environ中提到的PWD,它可以用来定位“/inst2”的绝对路径,因为它是在执行该cmdline时写入的。因此,我认为它是可靠的。谢谢你,但是,这不是一个有效和可靠的解决方案。我做了一些研究,我认为/proc/pid/environ可以做到这一点,你可以在该文件中找到“PWD=xxx”部分