以人类可读的方式显示 PATH

Art*_*ero 57 shell path environment-variables

我想以更易读的方式显示我的 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
Run Code Online (Sandbox Code Playgroud)

我在想这样的事情:

$ 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
...
Run Code Online (Sandbox Code Playgroud)

小智 82

您可以使用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
...
Run Code Online (Sandbox Code Playgroud)

您也可以在某些 shell 中执行此操作(在 bash 和 zsh 中测试):

echo -e ${PATH//:/\\n}
Run Code Online (Sandbox Code Playgroud)

在 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
Run Code Online (Sandbox Code Playgroud)

可以与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
...
Run Code Online (Sandbox Code Playgroud)

<<<运营商称为herestrings。Herestrings 将其右侧的单词传递到其左侧命令的标准输入。

$ cat <<< 'Hello there'
Hello there
Run Code Online (Sandbox Code Playgroud)

如果您的外壳不支持它们,请使用echo管道。

$ echo 'Hello there' | cat
Hello there
Run Code Online (Sandbox Code Playgroud)

  • 有趣的是使用 here-string,我会执行以下操作:`echo $PATH | tr ':' '\n'` 但更清楚你的解决方案。 (2认同)

iru*_*var 5

这是一个快速的方法bash

OLDIFS=$IFS IFS=: arr=($PATH) IFS=$OLDIFS
printf "%s\n" "${arr[@]}"
Run Code Online (Sandbox Code Playgroud)

  • 您可以使用子 shell 来避免保存/恢复“IFS”。例如 `(IFS=: arr=($PATH); printf "%s\n" "${arr[@]})")` (4认同)