나는 종종 소스에서 빌드된 소프트웨어를 만지작거리고 있는데, 이를 $HOME/.local
. 실행하려면 LD_LIBRARY_PATH
. 하지만 수동으로 모두 내보내고 싶지는 않습니다.모든시간이 지나면 그 소프트웨어 중 일부를 사용하고 싶습니다. 대부분은 my $HOME/.profile
및 .bashrc
파일 로 내보낼 수 있지만 LD_LIBRARY_PATH
. 이것은 에서만 변경할 수 있습니다 /etc/ld.so.conf
. 하지만 나는 루트의 파일을 수정하고 싶지 않습니다. 내 질문은 다음과 같습니다. 내 홈 폴더/어디에나 자동으로 두 번째 폴더로 처리되는 폴더를 만들 수 있습니까 /etc
? 아니면 그러한 디렉터리를 가리키도록 설정할 수 있는 환경 변수가 있습니까?
답변1
당신은
공유 해제 명령
원하는 파일이나 폴더를 마운트하고 교체할 수 있습니다. 의 솔루션도 있지만 chroot
구현하기가 훨씬 더 어렵습니다.
게시물에 좋은 예가 있습니다. /etc/hosts를 보완하기 위해 사용자별 호스트 파일을 생성할 수 있습니까?
그만큼프릴프가 대답해줘
파일 을 바꾸는 좋은 예는 다음과 같습니다 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
원본 콘텐츠에 데이터를 추가하여 대체 파일을 작성해야 합니다.