我經常擺弄從原始碼構建的軟體,我將其安裝在$HOME/.local
.為了使其運行,我必須導出各種變量,例如LD_LIBRARY_PATH
.但我不想手動匯出它們每一個是時候我想使用其中的一些軟體了。其中大部分可以匯出到 my$HOME/.profile
和.bashrc
文件中,但不能匯出到LD_LIBRARY_PATH
.這項一項只能在 中更改/etc/ld.so.conf
。但我不想修改 root 的檔案。所以我的問題是:我可以在我的主資料夾/任何地方建立一個資料夾,該資料夾將自動被視為第二個/etc
資料夾,或者是否有一個環境變數可以設定為指向這樣的目錄?
答案1
你可以使用
取消共享命令
安裝和替換您喜歡的任何文件或資料夾。也有 的解決方案chroot
,但實現起來要繁重得多。
在帖子中找到了一個很好的例子 我可以建立一個特定於使用者的主機檔案來補充 /etc/hosts 嗎?
這弗里爾普 的回答
是替換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
,您需要透過將資料附加到原始內容來建立替換文件。