Ich bastele oft an Software herum, die aus dem Quellcode erstellt wurde und die ich in installiere $HOME/.local
. Damit sie läuft, muss ich verschiedene Variablen exportieren, wie z . B. LD_LIBRARY_PATH
. Aber ich möchte sie nicht alle manuell exportieren müssenjedenMal möchte ich einige dieser Programme verwenden. Die meisten davon können in meine $HOME/.profile
und .bashrc
Datei exportiert werden, aber nicht LD_LIBRARY_PATH
. Dieses kann nur in geändert werden /etc/ld.so.conf
. Aber ich möchte die Dateien von root nicht ändern. Meine Frage ist also: Kann ich in meinem Home-Ordner/irgendwo einen Ordner erstellen, der automatisch als zweiter Ordner behandelt wird /etc
, oder gibt es eine Umgebungsvariable, die ich so einstellen kann, dass sie auf ein solches Verzeichnis verweist?
Antwort1
Sie können die
Befehl „unshare“
um beliebige Dateien oder Ordner zu mounten und zu ersetzen. Es gibt auch die Lösung von chroot
, aber die ist viel schwerer zu implementieren.
Ein gutes Beispiel findet sich im Beitrag Kann ich als Ergänzung zu /etc/hosts eine benutzerspezifische Hosts-Datei erstellen?
DerAntwort von frielp
ist ein gutes Beispiel für das Ersetzen der hosts
Datei:
Mit dem Befehl erstellte private Mountspaces
unshare
können verwendet werden, um einem Shell-Prozess und allen nachfolgenden untergeordneten Prozessen, die von dieser Shell gestartet werden, eine private /etc/hosts-Datei bereitzustellen.# 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
Der unshare
Befehl ersetzt Dateien oder Ordner. Wenn Sie also nurhinzufügenfür einige Dateien in /etc
müssten Sie die Ersatzdateien erstellen, indem Sie Ihre Daten an den Originalinhalt anhängen.