Kann ich einen privaten/benutzerspezifischen usw. Ordner haben?

Kann ich einen privaten/benutzerspezifischen usw. Ordner haben?

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/.profileund .bashrcDatei 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 hostsDatei:

Mit dem Befehl erstellte private Mountspaces unsharekö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 unshareBefehl ersetzt Dateien oder Ordner. Wenn Sie also nurhinzufügenfür einige Dateien in /etcmüssten Sie die Ersatzdateien erstellen, indem Sie Ihre Daten an den Originalinhalt anhängen.

verwandte Informationen