Показать PATH в удобном для восприятия человеком способом
Я хочу показать свою переменную среды 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
Я думаю примерно так:
- Могу ли я использовать переменные среды, если #including другой файл Xresources
- переменные среды для демонов
- Где можно установить глобальные параметры Java?
- В чем разница между ~ / .profile, ~ / .bashrc, ~ / .bash_profile, ~ / .gnomerc, / etc / bash_bashrc, / etc / screenrc ...?
- Переменные среды не попадают в bash_profile
$ 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 ...
3 Solutions collect form web for “Показать PATH в удобном для восприятия человеком способом”
Вы можете использовать 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