$PATH에 디렉토리를 추가하면 해당 하위 디렉토리가 재귀적으로 추가되지 않는 것으로 보입니다. 그럼 내가 이걸 할 수 있을까? 아니면 지원하지 않는 이유가 있나요?
답변1
일반적인 UNIX 디렉토리 구조는 애플리케이션 파일을 실행 bin
파일, lib
라이브러리, doc
문서 등 유형별로 디렉토리로 정렬합니다. 즉, 별도의 디렉토리에 설치됩니다. 종종 응용프로그램은 여러 디렉토리로 그룹화됩니다(많은 시스템에는 , 및 $PATH
3 /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
이와 관련하여 유틸리티(또는 )가 유용할 수 있습니다.
답변2
답변3
이것이 지원되지 않는 이유 중 하나는 bin/(및 유사한) 디렉터리가 심볼릭 링크를 사용하여 설치 프로그램의 실제 실행 파일이 있는 특정 디렉터리를 가리키기 때문입니다.
따라서 (아마도 그렇게 할 것입니다)을 $PATH
포함 하면 해당 폴더는 Ruby를 실행하는 코드가 있는 특정 디렉터리(예: )를 가리키는 심볼릭 링크(예: ) 로 가득 차 있습니다./usr/local/bin
ruby
../Cellar/ruby/2.1.3/bin/ruby
그렇기 때문에 에서 각 실행 파일에 대한 폴더를 지정할 필요가 없습니다 $PATH
. 일반적으로 bin/type 디렉토리에 있는 기호 링크가 이를 처리합니다.
답변4
Mac OS에서는 답변이 작동하지 않았으므로 작동하는 방법을 찾았습니다.
export PATH=$PATH:$(find $HOME/apps -type d -maxdepth 1 | paste -sd ":" -)
도움이 되었으면 좋겠습니다!
노트:여기에는 폴더 자체도 포함됩니다.