내 .profile, PATH="$HOME/.local/lib:$HOME/.local/bin:$HOME/.node_modules/bin:$HOME/.cargo/bin:$HOME/local/bin:/usr/bin:$PATH"
내 .zshrc에 miniconda 경로 콘텐츠(export PATH="/home/user/miniconda3/bin:$PATH")가 있었지만 삭제했는데 마지막으로 로드된 것 같았습니다. 나는 그것이 문제라고 생각하지 않습니다. 그러나 내 쉘에서는 다음을 얻습니다.
/sbin:/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/sbin:/opt/cuda/bin:/opt/cuda/nsight_compute:/opt/cuda/nsight_systems/bin:/usr/lib/jvm/default/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl:/var/lib/snapd/snap/bin
어쩌면 일부 아치 패키지가 이러한 경로를 설정할까요? 하지만 내 길에 sbin을 설정하는 것은 무엇입니까? 나는 뿌리가 아니다.
또한 내 .profile의 PATH 명령이 선택되지 않아 내보내기를 시도했지만 내보내지 않았습니다. 나는 그것이 효과가 있었다고 확신합니다. (편집: zsh는 .zprofile만 소스로 사용하는 것 같습니다.)
답변1
특이한 점은 lib
목차다. sbin
지난 몇 년 동안 점점 더 많은 Linux 배포판에서 sbin
해당 bin
디렉터리 로 디렉터리 기호를 만들었기 때문에 이것이 있는 것이 일반적입니다. 예를 들어, 내 아치에서:
$ ls -ld /sbin /usr/sbin
lrwxrwxrwx 1 root root 7 Jan 31 20:51 /sbin -> usr/bin
lrwxrwxrwx 1 root root 3 Jan 31 20:51 /usr/sbin -> bin
이것은아치 문서:
Arch Linux는 다음을 사용하여 운영 체제의 파일 시스템 계층 구조를 따릅니다.체계서비스 매니저. 바라보다파일 계층 구조(7)각 디렉터리와 해당 이름에 대한 설명입니다. 특히,
/bin
,/sbin
및 은/usr/sbin
에 대한 심볼릭 링크이고/usr/bin
,/lib
및 는/lib64
에 대한 심볼릭 링크입니다/usr/lib
.
s를 해당 s에 심볼릭 링크시켜 bin
병합하고 디렉토리를 만드는 것이 점점 일반화되고 있습니다 . freedesktop.org의 사람들이 이것을 보여줍니다.sbin
sbin
bin
여기, 아래에 그들의 주요 주장 중 일부를 재현합니다.
호환성: 필수 사항
- 다른 Unix/Linux와의 동작 호환성이 향상되었습니다.
/usr
병합 후 모든 바이너리는 각각 및 에서 사용할 수 있습니다/bin
( 심볼릭 링크가 각각 에 대한 심볼릭 링크 가 되었기 때문/usr/bin
입니다 ). 이는 다른 Unix 또는 기타 Linux용으로 작성되고 배포판으로 포팅된 스크립트/프로그램이 더 이상 호출된 바이너리의 파일 시스템 경로를 수정할 필요가 없음을 의미합니다. 그렇지 않으면 불만의 주요 원인이 될 수 있습니다. 그리고 (각각 and) 완전히 동일해집니다./sbin
/usr/sbin
/bin
/usr/bin
/sbin
/usr/sbin
/usr/bin
/bin
/usr/sbin
/sbin
- 다른 Unix(특히 Solaris) 스킨과의 호환성 향상: 현재 주요 상용 Unix 구현은 Oracle Solaris입니다. Solaris는
/usr
Solaris 11에서 동일한 병합을 완료했습니다. Linux에서도 동일한 변경을 수행함으로써 기본 Unix 구현과의 차이점을 최소화하여 Solaris 이식성을 단순화했습니다.- GNU 빌드 시스템과의 호환성 향상: Linux 소프트웨어의 가장 큰 부분은 Linux 관련
/usr
파티셔닝을 인식하지 못하는 GNU autoconf/automake(예: GNU autotools)를 사용하여 빌드됩니다. 분할을 유지하려면/usr
업스트림 빌드 시스템 및 배포 패키지에서 중요한 프로젝트별 처리가 필요합니다. 병합 하면/usr
이 작업이 불필요해지고 패키지를 Linux로 포팅하는 것이 더 간단해집니다.- 현재 업스트림 개발과의 호환성 향상: Linux 배포판과 업스트림 개발 간의 차이를 최소화하려면
/usr
병합이 중요합니다.[. . .]
호환성을 넘어서
/usr 병합의 주요 이점은 시스템 복잡성이 줄어든다는 것입니다. 새로운 파일 시스템 계층 구조가 더 단순해지고 공급업체가 제공한 운영 체제 리소스(읽기 전용, 변경 불가능)와 사용자 리소스가 더 명확해집니다. 계층 구조의 복잡성이 줄어들면서 .spec 파일의 분할 처리 문제가 사라지면서 패키징이 더 단순해집니다.
병합된 디렉터리 /usr에는 공급업체에서 제공하는 거의 모든 운영 체제 리소스가 포함되어 있으며, 운영 체제 스냅샷과 관련된 많은 새로운 기능과 네트워크 공유 또는 단일 호스트에서 여러 게스트 실행을 위한 엔터프라이즈 환경 옵션을 제공합니다. 공급업체가 제공하는 정적 운영 체제 리소스는 단일 위치에서 독점되며 전체 시스템에 대해 또는 각 서비스에 대해 개별적으로 읽기 전용으로 쉽게 설정할 수 있습니다. 현재 여러 디렉터리에 걸쳐 임의의 도구가 단편화되어 있기 때문에 이 작업의 대부분은 어렵거나 심지어 불가능합니다.
공급업체가 제공한 모든 운영 체제 리소스를 단일 디렉터리 /usr에 배치하면 원자적으로 공유할 수 있고 해당 리소스의 스냅샷이 원자성이 되며 파일 시스템을 단일 단위로 읽기 전용으로 만들 수 있습니다.
귀하의 설정에 관해서는 PATH
귀하의 경우 /usr/local/sbin
기본 파일에 의해 추가됩니다 /etc/profile
.
$ grep sbin /etc/profile
append_path '/usr/local/sbin'
/sbin
추가할 위치 나 추가할 위치를 찾을 수 없습니다 /usr/sbin
. 이상합니다. 내가 생각할 수 있는 어떤 문서에도 그것들이 언급되어 있지 않은 것 같습니다. bib2
다음 경로를 사용하여 시스템에 새 사용자를 만들었습니다 .
$ echo $PATH
/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/sbin:/usr/local/bin
그러나 다음을 제외하고 /usr/local/sbin
다른 sbin
디렉토리는 명백한 위치에 언급되지 않습니다.
$ grep -HR sbin ~/.bashrc ~/.profile ~/.bash_profile \
~/bash.login ~/.bash_aliases /etc/bash.bashrc /etc/profile \
/etc/profile.d/ /etc/environment /etc/security/pam_env.conf \
/etc/login.defs 2>/dev/null
/etc/profile:append_path '/usr/local/sbin'
/etc/login.defs:ENV_SUPATH PATH=/usr/local/sbin:/usr/local/bin:/usr/bin
/etc/login.defs:ENV_PATH PATH=/usr/local/sbin:/usr/local/bin:/usr/bin
/etc/login.defs:#USERDEL_CMD /usr/sbin/userdel_local
따라서 이것들은 다른 곳에서 정의되어야 하는데 어디서 찾을 수 없습니다.