bash에서 $PATH에 하위 디렉터리를 추가하려면 find를 사용하세요.

bash에서 $PATH에 하위 디렉터리를 추가하려면 find를 사용하세요.

나는 이것을 시도했다

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

-printf하지만 이는 Linux에서만 작동하며 OSX(또는 Freebsd)에서는 POSIX가 아니기 때문에 작동하지 않습니다 . 두 플랫폼 모두에 호환되는 버전을 작성하는 방법은 무엇입니까?

답변1

bash 또는 dash 쉘에 대해 다음을 수행하십시오.

PATH=$PATH$(find $HOME/scripts/ -type d -exec printf ":%s" {} +)

또한 생선 껍질을 사용하려면 다음과 같이 할 수 있습니다.

set -x PATH $PATH (find $HOME/scripts/ -type d -exec printf ":%s" \{\} +)

답변2

Q 태그와 제목을 지정했기 때문에 bash이것은 전혀 필요하지 않은 솔루션입니다 find. bash를 사용합니다.글로벌 스타재귀 디렉터리:

PATH=${PATH}$(shopt -s globstar dotglob; printf ":%s" ~/scripts/**/)

shopt는 서브쉘에서 실행되므로 실행 중인 쉘에 영향을 주지 않습니다. printfbash가 내장 되어 있습니다 . 콜론을 조심스럽게 넣었습니다.앞으로%s끝에 의도치 않게 빈 경로 문자열이 생기지 않도록 형식 문자열에 printf를 추가하세요 ( .PATH에 추가하는 것과 동일).

관련 정보