디렉토리의 모든 서브 디렉토리를 $ PATH로 설정하려면 어떻게해야합니까?


38

$ PATH에 디렉토리를 추가 할 때 하위 디렉토리가 재귀 적으로 추가되지 않는 것처럼 보입니다. 그렇게 할 수 있습니까? 또는 이것이 지원되지 않는 이유가 있습니까?


5
왜 지구상에서 그렇게해야합니까?
alex

10
@alex : 왜 필요가 없다고 생각하십니까?
Tim

4
@ "일반적으로"지원되지 않는 이유는 보안 위험이며 일반적으로 필요하지 않기 때문입니다. 재귀 적으로 경로에 디렉토리를 추가하면 거기에 무엇이 붙어 있는지 알 수 있습니다 ... 감사하기가 훨씬 더 어려워집니다.
xenoterracide

4
@Tim : 정말 놀랍고 특이한 것이기 때문입니다.
alex

8
@alex bin 디렉토리의 하위 디렉토리는 어떻습니까? bin 폴더의 디렉토리에 스크립트를 구성하고 싶습니다.
Andy

답변:


19

다음과 같이 find를 사용하여 재귀 적으로 추가하십시오.

PATH=$PATH$( find $HOME/scripts/ -type d -printf ":%p" )

경고 : 질문에 대한 의견에서 언급했듯이 추가 된 디렉토리의 실행 파일이 악성이 아니라는 보장이 없으므로 보안 위험이 있으므로 권장되지 않습니다.

Gilles의 답변 을 따르고 stow를 사용 하는 것이 더 나은 솔루션 일 것입니다.


6
경고 :이 답변은 기술적으로는 정확하지만 alex와 xenoterracide는이 방법을 사용하는 것은 안전하지 않은 일이므로 실제로 사용하기 전에 반드시 두 번 생각해야합니다.
Caleb

2
이것이 실제로 안전하지 않은 이유에 대한 답변에 경고를 추가하십시오.
Caleb

3
나는 그것이 특히 위험하다고 생각하지 않을 것이다 . 임의의 디렉토리를 추가하는 $PATH것은 위험하지만 하위 디렉토리를 추가하는 것은 크게 나쁘지 않습니다. 그러나 일반적으로 쓸모 없고 비효율적입니다 (때로는 환경 크기 제한에 처할 수도 있습니다).
Gilles 'SO- 악마 그만해'

3
@ Caleb : 아마도 미쳤지 만 왜 안전하지 않은가? 하위 디렉토리에 악성 실행 파일을 추가 할 수있는 권한이있는 사용자는 상위 디렉토리 (예 : ~/bin또는 ~/scripts)에 추가 할 수 있으므로 보안이 동일합니다.
MestreLion

2
임의의 사람들이 귀하의에 악성 파일을 추가 할 수있는 환경에서 작업하는 경우 보안 위험이 있습니다 ~/scripts. 난 다른 사람도 안 돼요
oseiskar

21

일반적인 유닉스 디렉토리 구조는 어플리케이션 파일 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) 그 점에서 유용 할 수 있습니다.


4

이것이 지원되지 않는 한 가지 이유는 bin / (및 유사한) 디렉토리가 기호 링크를 사용하여 프로그램의 실제 실행 파일이 설치된 특정 디렉토리를 가리 키기 때문입니다.

따라서 $PATH포함 파일 /usr/local/bin(가장 가능성이 높음)에 ruby루비 실행 코드가있는 특정 디렉토리를 가리키는 기호 링크 (예 :)가 가득 ../Cellar/ruby/2.1.3/bin/ruby합니다.

따라서 각 실행 파일의 폴더를 지정할 필요가 없습니다 $PATH. bin / type 디렉토리에있는 기호 링크는 사용자를 위해이를 처리합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.