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