터미널에서 스크립트를 전역적으로 사용할 수 있게 만드는 올바른 방법(예: 명령)에 대해 약간 혼란스럽습니다. 두 가지 방법이 있습니다. alternatives
유틸리티를 사용하는 것입니다. 기본적으로 /usr/bin에 대한 심볼릭 링크를 만든 다음 에 추가합니다 . 추가는 전체 디렉토리를 추가하는 것을 의미하며 사용자별로 작동한다는 것을 PATH
이해합니다 . PATH
하지만 제가 싫어하는 것은 그 과정의 혼란입니다. (적어도 내 관점에서는) 모든 배포판에는 고유한 특징이 있는 것 같습니다. 심지어 다른 버전의 배포판에서도 무언가를 추가하는 데 어려움을 겪고 PATH
있으며 온라인에서 이를 수행하는 방법에 대해 논쟁하는 답변이 있으며 더 중요한 것은 하지 않는 방법입니다. 해.
alternatives
Java를 설치할 때 일반적으로 다음과 같이 Java 및 javac를 전역적으로 사용할 수 있게 만드는 지침을 찾습니다 .
대안 --install /usr/bin/java java /opt/jdk1.7.0_79/bin/java 2
alternatives
이제 더 자주 사용하는 것이 문제가 있습니까? 주로 Java 설정 튜토리얼에서 찾을 수 있나요? Typesafe Activator를 전 세계적으로 사용할 수 있도록 하기 위해 이것을 사용합니다. 또한 Ansible과 같은 자동화 도구가 더 쉽다고 생각합니다. 관리자 입장에서는 문제가 없나요?
답변1
첫째, 대안은 데비안에서 왔으며 redhat, freebsd 또는 기타 여러 시스템에서는 작동하지 않습니다. 둘째, 표준 권장 사항은 공급업체 패키지의 경우 /usr/bin, 타사 패키지의 경우 /opt, 로컬 실행 파일의 경우 /usr/local/bin을 사용하고 사용자 실행 파일의 경로를 설정하는 것입니다.
대안의 목적은 동일한 기능을 제공하는 여러 패키지를 갖는 것입니다. 예를 들어 debian에는 최소한 3개의 mailx 패키지, 2개의 awk 패키지 및 여러 개의 java 패키지가 있습니다.
이제 질문의 핵심입니다. 튜토리얼에서 귀하가 보여주는 대안을 사용하는 이유는 무엇입니까? 대안은 데비안 패키지와 긴밀하게 작동하므로 타사 패키지가 주로 공급업체 패키지로 작동하게 됩니다. 설치하는 대신 대안을 사용해야 합니까? 절대 아닙니다. 교체는 권한을 설정하지 않습니다.
Unix의 핵심 아이디어 중 하나는 모든 것이 파일이라는 것입니다. (엄밀히 말하면 이것은 더 이상 사실이 아니지만 디자인 목표로서 많은 것을 형성했습니다.) 이제 권한과 관련된 파일로 수행할 수 있는 세 가지 작업이 있습니다. 읽고, 쓰고, 실행됩니다. 읽거나 쓸 때 열 파일을 지정하는 방법에는 두 가지가 있습니다. 절대 경로(루트 디렉터리에 대한 상대 경로) 또는 상대 경로(현재 디렉터리에 대한 상대 경로)입니다. 실행은 좀 더 복잡하며, 실행할 파일을 지정하는 세 가지 방법이 있습니다. 절대 경로, 순수 파일 이름 및 상대 경로입니다. 절대 경로는 위와 동일합니다. 상대 경로는 위와 유사하지만 명시적으로 지정되거나(이름에 슬래시가 포함됨) 경로에 상대 경로가 포함된 경우에만 사용됩니다. 경로는 PATH 환경 변수(포크 중에 상위 프로세스에서 상속됨)의 각 프로세스에 대해 지정됩니다. 이름에 슬래시 없이 실행 파일을 지정하면 경로는 실행 파일을 찾을 수 있는 디렉터리 목록입니다. 관리를 단순화하고 실행 파일 위치의 속도를 높이기 위해 실행 파일은 소수의 디렉터리에 수집됩니다. 대부분의 실행 파일은 /bin, /usr/bin 또는 /usr/local/bin에 있으며 특수 목적 실행 파일은 /sbin, /usr/sbin, /usr/local/sbin 및 /usr/에 있습니다. 계략. 일부 사용자는 개인적인 용도로 다른 위치에 추가 바이너리를 배치합니다. 나는 ~/.bin에 내 디렉토리를 두는 것을 좋아하지만 ~/bin도 일반적이며 사용자의 필요에 따라 다른 디렉토리가 사용되는 경우도 있습니다.
공유할 실행 파일을 배치할 때 각 사용자는 다른 사용자에게 바이너리 위치를 알려주거나 공개 위치에 배치할 수 있습니다. 실행 파일을 공개 위치에 배치할 때 파일을 복사하고 해당 권한을 수동으로 설정하거나 설치를 사용하여 세부 사항을 더 간단한 방법으로 처리할 수 있습니다. 때로는 복잡한 타사 패키지를 설치하고 모든 관련 파일(라이브러리 등)로 파일 시스템의 주요 부분을 복잡하게 만들고 이를 /opt/package 또는 /opt/vendor/package에 배치하는 것을 원하지 않습니다. 경로에 관련 디렉터리를 추가하거나 표준 디렉터리에 래퍼 스크립트 또는 기호 링크를 배치할 수 있습니다. 대안은 동일한 기본 기능과 동일한 실행 파일 이름으로 여러 프로그램을 사용할 수 있는 경우 올바른 프로그램이 사용되도록 기호 링크와 데이터베이스 항목을 넣는 것입니다.
답변2
[무엇입니까] 터미널에서 스크립트를 전역적으로 사용할 수 있게 만드는 올바른 방법입니다.
이를 수행하는 한 가지 방법은 명령을 에 추가하고 /usr/local/bin
이 단일 디렉토리가 있는지 확인하는 것입니다 PATH
. 여러 명령이 포함된 완전한 응용 프로그램이 있는 경우 /usr/local/bin
응용 프로그램 디렉토리에 있는 명령을 가리키는 기호 링크를 추가하는 것은 무리가 아닙니다. .
/usr/local/bin
이것은 실제로 30개 이상의 항목이 포함된 내 디렉토리 중 하나에서 발췌한 것입니다 . VMware 도구는 별도의 디렉토리에 저장되어 있지만 /usr/local/bin
다른 도구는 디렉토리 자체에 저장되어 있는 것을 볼 수 있습니다.
$ ls -l /usr/local/bin
total 804
-rwxr-xr-x 1 root staff 6717 Feb 4 2014 ad-search
-rwxr-xr-x 1 root staff 4811 Feb 2 2011 cpd
-rwxr-xr-x 1 root staff 798 Aug 13 2013 echoel
-rwxr-xr-x 1 root staff 294 Jun 18 2007 ifvi
...
lrwxrwxrwx 1 root staff 45 Feb 6 2014 vmware-gksu -> /usr/local/lib/vmware-tools/bin64/vmware-gksu
lrwxrwxrwx 1 root staff 43 Feb 6 2014 vmware-hgfsclient -> /usr/local/lib/vmware-tools/bin64/appLoader
lrwxrwxrwx 1 root staff 43 Feb 6 2014 vmware-toolbox-cmd -> /usr/local/lib/vmware-tools/bin64/appLoader
-rwxr-xr-x 1 root staff 256307 Feb 6 2014 vmware-uninstall-tools.pl