$ PATH에 디렉토리를 추가 할 때 하위 디렉토리가 재귀 적으로 추가되지 않는 것처럼 보입니다. 그렇게 할 수 있습니까? 또는 이것이 지원되지 않는 이유가 있습니까?
$ PATH에 디렉토리를 추가 할 때 하위 디렉토리가 재귀 적으로 추가되지 않는 것처럼 보입니다. 그렇게 할 수 있습니까? 또는 이것이 지원되지 않는 이유가 있습니까?
답변:
다음과 같이 find를 사용하여 재귀 적으로 추가하십시오.
PATH=$PATH$( find $HOME/scripts/ -type d -printf ":%p" )
경고 : 질문에 대한 의견에서 언급했듯이 추가 된 디렉토리의 실행 파일이 악성이 아니라는 보장이 없으므로 보안 위험이 있으므로 권장되지 않습니다.
$PATH
것은 위험하지만 하위 디렉토리를 추가하는 것은 크게 나쁘지 않습니다. 그러나 일반적으로 쓸모 없고 비효율적입니다 (때로는 환경 크기 제한에 처할 수도 있습니다).
~/bin
또는 ~/scripts
)에 추가 할 수 있으므로 보안이 동일합니다.
~/scripts
. 난 다른 사람도 안 돼요
일반적인 유닉스 디렉토리 구조는 어플리케이션 파일 bin
을 실행 파일, lib
라이브러리, doc
문서 등 종류별로 디렉토리로 분류 합니다. 그때는 별도의 디렉토리에 설치됩니다. 종종 응용 프로그램은 몇 디렉토리 (따라서 많은 시스템은 단지 세 개의 디렉토리가로 분류된다 $PATH
: /usr/local/bin
, /usr/bin
및 /bin
). 디렉토리 내에 실행 파일과 서브 디렉토리를 모두 갖는 경우는 드물기 때문에에 디렉토리 서브 디렉토리를 포함시킬 필요가 없습니다 $PATH
.
때때로 유용한 것은 bin
주어진 디렉토리에 있는 서브 디렉토리의 모든 서브 디렉토리 를 다음에 포함 시키는 것입니다 $PATH
.
for d in /opt/*/bin; do PATH="$PATH:$d"; done
그러나 이것은 거의 이루어지지 않습니다. 비표준 디렉토리의 실행 파일이 있어야하는 일반적인 방법 $PATH
은와 같은 경로의 디렉토리에 기호 링크를 만드는 것 /usr/local/bin
입니다. stow
유틸리티 (또는 xstow
) 그 점에서 유용 할 수 있습니다.
이것이 지원되지 않는 한 가지 이유는 bin / (및 유사한) 디렉토리가 기호 링크를 사용하여 프로그램의 실제 실행 파일이 설치된 특정 디렉토리를 가리 키기 때문입니다.
따라서 $PATH
포함 파일 /usr/local/bin
(가장 가능성이 높음)에 ruby
루비 실행 코드가있는 특정 디렉토리를 가리키는 기호 링크 (예 :)가 가득 ../Cellar/ruby/2.1.3/bin/ruby
합니다.
따라서 각 실행 파일의 폴더를 지정할 필요가 없습니다 $PATH
. bin / type 디렉토리에있는 기호 링크는 사용자를 위해이를 처리합니다.