我经常摆弄从源代码构建的软件,这些软件我安装在 中$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
,您需要通过将数据附加到原始内容来构建替换文件。