私はよく、 にインストールしたソースから構築されたソフトウェアをいじっています$HOME/.local
。それを実行するには、 などのさまざまな変数をエクスポートする必要がありますLD_LIBRARY_PATH
。しかし、それらをすべて手動でエクスポートするのは避けたいのです。毎いつか、そのソフトウェアのいくつかを使いたいです。それらのほとんどは、$HOME/.profile
および.bashrc
ファイルにエクスポートできますが、 はできませんLD_LIBRARY_PATH
。これは でのみ変更できます/etc/ld.so.conf
。しかし、ルートのファイルを変更したくありません。そこで私の質問は、ホーム フォルダー / の任意の場所にフォルダーを作成して、自動的に 2 番目のフォルダーとして扱うことはできますか/etc
、またはそのようなディレクトリを指すように設定できる環境変数はありますか ?
答え1
あなたは
共有解除コマンド
好きなファイルやフォルダをマウントして置き換えることができます。 という解決策もありますchroot
が、実装がはるかに重くなります。
良い例は投稿にあります /etc/hosts を補完するユーザー固有の hosts ファイルを作成できますか?
のfrielpによる回答
ファイルを置き換える良い例は次のとおりですhosts
。
このコマンドで作成されたプライベート マウント スペースは
unshare
、シェル プロセスとそのシェルから開始された後続の子プロセスにプライベート /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
、元のコンテンツにデータを追加して置換ファイルを作成する必要があります。