不使用 bash 扩展的当前用户主目录的绝对路径?

不使用 bash 扩展的当前用户主目录的绝对路径?

这是一个时常出现的问题,让我非常烦恼。

有时我需要提供一个绝对路径,通常在配置文件中,它应该引用当前用户的主目录,但配置文件不理解 bash 的波形符或变量扩展(因此~/foobar$HOME/foobar、 和/home/$USER/foobar都出局了)。

我理想的解决方案是,如果其中有一些“活动”符号链接/proc或类似的符号链接始终扩展到当前用户的主目录。例如,我们有/proc/self,它是一个符号链接,其值取决于访问它的进程。是否存在始终引用当前用户主目录的类似链接?

当编写可重复使用的配置时,这种情况经常会出现,这些配置将与组织内的其他人共享,或者与我自己跨计算机共享(其中我的用户名在计算机之间可能不同)。它还可能成为使配置文件可重定位的障碍。例如,理想情况下,创建我的 tarball$HOME并将其提取到另一个用户的$HOMEtarball 将立即为其他用户设置与我自己相同的环境,但如果我的所有符号链接和/或配置文件都用 硬编码/home/cdfh/...,那么显然这将不起作用。

在所有情况下,总会有解决方法,但是能够引用$HOMEwith/proc/home将非常有用。

因此,经过多年的不令人满意的解决方法后,我想问:还有其他人遇到这个问题吗?您找到了哪些解决方法?有什么解决办法吗?

编辑:

我的平台是 Linux,尽管我会代表任何/所有 Unix 派生系统问这个问题。

对于“主动”的做法,这些 问题是相关的,结果是我会使用脚本文件系统创建一个文件系统,其中读取文件不再读取文件的数据,而是执行一个其标准输出替代文件数据的进程。因此,该过程将输出充当读取用户主目录的符号链接的数据。遗憾的是我还没有机会实现这一点。

使用我现在理解的正确术语重新表述这个问题,我想创建一个变量符号链接它根据HOME环境变量生成一个链接。不幸的是,Linux 本身并不支持变量符号链接,但可以使用基于 FUSE 的方法来实现,例如上面的方法。奇怪的是,他们各种 BSD 都支持,以及一些正在提倡对 Linux 提供支持。

相关内容