Chcę pokazać moją zmienną środowiskową PATH w sposób bardziej czytelny dla człowieka.
$ 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
Myślę o czymś takim:
$ 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
...
shell
environment-variables
path
Arturo Herrero
źródło
źródło
Odpowiedzi:
Możesz użyć
tr
.Możesz to również zrobić w niektórych powłokach (testowane w bash i zsh):
W zsh możesz użyć
$path
zmiennej, aby zobaczyć swoją ścieżkę ze spacjami zamiast dwukropków.Które można łączyć z
printf
lubprint
.Te
<<<
podmioty są nazywane herestrings. Ciągi znaków przekazują słowo po prawej stronie do standardowego wejścia polecenia po lewej stronie.Jeśli twoja powłoka ich nie obsługuje, użyj
echo
i potoku.źródło
echo $PATH | tr ':' '\n'
ale bardziej jasne jest twoje rozwiązanie.print -l $path
zapisuje kilka naciśnięć klawiszy. Nie udaje się, jeśli$path
zawiera odwrotne ukośniki, ale jest to bardzo nietypowe.$PATH
.Oto szybki sposób
bash
źródło
IFS
za pomocą podpowłoki. np.(IFS=: arr=($PATH); printf "%s\n" "${arr[@]})")
/bin:/usr/bin:
kiedyś była to wspólna wartość$PATH
)$PATH
zawiera znaki wieloznaczne (mało prawdopodobne)bash
, możesz użyćIFS=: read -a arr <<< "$PATH"
do podziału części. W ten sposóbIFS
nowa wartość zostanie wykorzystana tylko podczas wykonywaniaread
, więc nie trzeba jej przywracać. pastebin.com/7E7C4AcRIFS
nowa wartość utrzymuje się po utworzeniu tablicy, ale nie po uruchomieniuread
?Rozwijając rozwiązanie Smitha Johna , tworzy to miły alias w twoim
.bash_profile
:źródło
Zauważ, że nieuzbrojona ŚCIEŻKA ma inne znaczenie niż pusta ŚCIEŻKA. Pusta ŚCIEŻKA zawiera jeden pusty element, a to oznacza szukanie plików wykonywalnych tylko w bieżącym katalogu, nieuzbrojona ŚCIEŻKA oznacza wyszukiwanie plików wykonywalnych na domyślnej liście katalogów (należy jednak pamiętać, że w niektórych systemach nie każde narzędzie zgadza się z zawartością ta lista)
W
zsh
:W powłokach POSIX (zauważ, że
zsh
nawet wsh
trybie nie ma pod tym względem POSIX):źródło