PATH 환경 변수를보다 읽기 쉬운 방식으로 보여주고 싶습니다.
$ echo $PATH
/Users/arturo/.rvm/gems/ruby-1.9.3-p392/bin:/Users/arturo/.rvm/gems/ruby-1.9.3-p392@global/bin:/Users/arturo/.rvm/rubies/ruby-1.9.3-p392/bin:/Users/arturo/.rvm/bin:/usr/local/git/bin:/Users/arturo/.gvm/groovy/current/bin:/Users/arturo/.gvm/grails/current/bin:/Users/arturo/.gvm/griffon/current/bin:/Users/arturo/.gvm/gradle/current/bin:/Users/arturo/.gvm/lazybones/current/bin:/Users/arturo/.gvm/vertx/current/bin:/Users/arturo/.gvm/bin:/Users/arturo/.gvm/ext:/usr/local/git/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/local/git/bin
나는 이런 식으로 생각하고있다 :
$ echo $PATH | some cut and awk magic
/Users/arturo/.rvm/gems/ruby-1.9.3-p392/bin
/Users/arturo/.rvm/gems/ruby-1.9.3-p392@global/bin
/Users/arturo/.rvm/rubies/ruby-1.9.3-p392/bin
/Users/arturo/.rvm/bin
...
답변
사용할 수 있습니다 tr
.
$ tr ':' '\n' <<< "$PATH"
/Users/arturo/.rvm/gems/ruby-1.9.3-p392/bin
/Users/arturo/.rvm/gems/ruby-1.9.3-p392@global/bin
/Users/arturo/.rvm/rubies/ruby-1.9.3-p392/bin
...
bash 및 zsh에서 테스트 한 일부 쉘에서도이를 수행 할 수 있습니다.
echo -e ${PATH//:/\\n}
zsh에서는 $path
변수를 사용하여 콜론 대신 공백이있는 경로를 볼 수 있습니다.
$ echo $path
/Users/arturo/.rvm/gems/ruby-1.9.3-p392/bin /Users/arturo/.rvm/gems/ruby-1.9.3-p392@global/bin /Users/arturo/.rvm/rubies/ruby-1.9.3-p392/bin /Users/arturo/.rvm/bin
어느와 결합 될 수있다 printf
나 print
.
$ printf "%s\n" $path
/Users/arturo/.rvm/gems/ruby-1.9.3-p392/bin
/Users/arturo/.rvm/gems/ruby-1.9.3-p392@global/bin
/Users/arturo/.rvm/rubies/ruby-1.9.3-p392/bin
...
$ print -l $path
/Users/arturo/.rvm/gems/ruby-1.9.3-p392/bin
/Users/arturo/.rvm/gems/ruby-1.9.3-p392@global/bin
/Users/arturo/.rvm/rubies/ruby-1.9.3-p392/bin
...
<<<
사업자라는 herestrings 있습니다. Herestrings는 왼쪽에있는 명령의 표준 입력으로 단어를 오른쪽으로 전달합니다.
$ cat <<< 'Hello there'
Hello there
쉘이 지원하지 않으면 echo
파이프를 사용하십시오.
$ echo 'Hello there' | cat
Hello there
답변
여기에 빠른 방법이 있습니다 bash
OLDIFS=$IFS IFS=: arr=($PATH) IFS=$OLDIFS
printf "%s\n" "${arr[@]}"
답변
답변
설정되지 않은 PATH는 빈 PATH와 다른 의미를 갖습니다. 빈 PATH에는 하나의 빈 요소가 포함되며 이는 현재 디렉토리에서만 실행 파일을 찾는 것을 의미합니다. 설정되지 않은 PATH는 기본 디렉토리 목록에서 실행 파일을 검색하는 것을 의미합니다 (그러나 일부 시스템에서는 모든 도구가 그 목록)
에서 zsh
:
if (($+PATH)); then
echo "$#path element(s):"
printf '%q\n' "$path[@]"
else
echo "PATH unset"
fi
POSIX 셸에서 ( 모드의 zsh
경우에도 sh
POSIX가 아닙니다) :
if [ -n "${PATH+.}" ]; then
(
p=$PATH:
set -f
IFS=:
set -- $p
echo "$# element(s):"
printf '"%s"\n' "$@"
)
else
echo "PATH unset"
fi