我可以拥有一个私人/用户特定的等文件夹吗?

我可以拥有一个私人/用户特定的等文件夹吗?

我经常摆弄从源代码构建的软件,这些软件我安装在 中$HOME/.local。为了运行它,我必须导出各种变量,例如LD_LIBRARY_PATH。但我不想手动导出它们每一个有时候我想使用一些软件。大多数软件都可以导出到我的$HOME/.profile.bashrc文件中,但不能LD_LIBRARY_PATH。这个只能在中更改/etc/ld.so.conf。但我不想修改 root 的文件。所以我的问题是:我可以在我的主文件夹/任何地方创建一个文件夹吗?它将自动被视为第二个/etc文件夹,或者是否存在我可以设置指向此类目录的环境变量?

答案1

您可以使用 取消共享命令 挂载和替换任何你喜欢的文件或文件夹。还有 的解决方案chroot,但实现起来要麻烦得多。

这篇文章就是一个很好的例子 我可以创建一个用户特定的主机文件来补充 /etc/hosts 吗?

frielp 的回答 是替换hosts文件的一个很好的例子:

使用该命令创建的私有挂载空间unshare可用于向 shell 进程及其从该 shell 启动的任何后续子进程提供私有的 /etc/hosts 文件。

# Start by creating your custom /etc/hosts file
[user] cd ~
[user] cat >my_hosts <<EOF
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
127.0.0.1 news.bbc.co.uk
EOF

[user] sudo unshare --mount
# We're now running as root in a private mountspace. 
# Any filesystem mounts performed in this private mountspace
# are private to this shell process and its children

# Use a bind mount to install our custom hosts file over /etc/hosts
[root] mount my_hosts /etc/hosts --bind

[root] cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
127.0.0.1 news.bbc.co.uk

[root] exec su - appuser

[appuser] # Run your app here that needs a custom /etc/hosts file

[appuser] ping news.bbc.co.uk
PING news.bbc.co.uk (127.0.0.1) 56(84) bytes of data.
64 bytes from localhost (127.0.0.1): icmp_seq=1 ttl=64 time=0.062 ms
64 bytes from localhost (127.0.0.1): icmp_seq=2 ttl=64 time=0.026 ms
^C
--- news.bbc.co.uk ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 999ms
rtt min/avg/max/mdev = 0.026/0.044/0.062/0.018 ms

unshare命令替换文件或文件夹。因此,如果您只想添加对于中的某些文件/etc,您需要通过将数据附加到原始内容来构建替换文件。

相关内容