我正在制作 .deb 安装程序,并希望将一些文件放在用户主目录中,但我无法对用户名进行硬编码。有谁知道文件系统中的任何其他位置可以放置文件和文件夹,或者如何让它将文件夹放在那里?我不想使用任何 postinst 脚本来执行此操作。
答案1
您永远不应该将文件与包一起安装到主目录中。
相反,您可以安装默认配置文件,以便/etc/skel
安装软件包后创建的新用户将这些文件复制到其新创建的主目录中。不过,已经存在的用户将不会获得这些新文件。您的应用程序首次运行时可以在用户的主目录中创建配置文件。
如果您只想将文件添加到每个人(或特定某人)的主目录中,那么您真正想要的是配置管理系统。安装软件包是错误的方法。
答案2
~
,表示用户拥有的用户名的用户文件夹。
但我强烈建议您改用/tmp
,没有理由使用~
.
答案3
安装需要在root用户下运行的deb包。
通过使用SUDO_USER
(记录在曼须藤)
因此,要获取正确的用户主目录,请使用:
USER_HOME_DIR=$(getent passwd $SUDO_USER | cut -d: -f6)
echo "User Home Dir: $USER_HOME_DIR"
从您的终端测试它:
sudo bash -c 'echo $(getent passwd $SUDO_USER | cut -d: -f6)'