En taşınabilir yol export -p.
export -pdışa aktarılan değişkenleri listeler. Bu genellikle gibidir declare -x, eğer senin kabuk vardır declare.
Halen kullanılmakta olan Bourne tarzı mermiler export -p, POSIX'in gerektirdiği şekilde desteklemelidir :
Ne zaman -p belirtilmişse, ihracat standart çıkışa aşağıdaki biçimde tüm ihraç değişkenlerin adlarını ve değerlerini, yazacak:
"export %s=%s\n", <name>, <value>
eğer adı ayarlanır ve:
"export %s\n", <name>
eğer adı düzdür.
Standart , değişkenin değerinin, genellikle =bir ödevin sağ tarafında daha sonra kullanılmasına izin verecek şekilde görüntülendiğini açıklar . Bu, alıntılanabileceği anlamına gelir. Farklı mermiler farklı gösterebilir fakat aynı etkiye sahiptir. Dash gibi yerleşik export -polmayan kabuklarda bile çalışır .declare
$ dash -c 'export -p | grep HOME=' # busybox sh and other ash give the same output.
export HOME='/home/ek'
$ posh -c 'export -p | grep HOME=' # ksh93, mksh, lksh, and others give the same output.
export HOME=/home/ek
Çıktıyı grepkompaktlık için kullandım, ancak filtrelemezseniz dışa aktarılan değişkenlerin tam listesini alırsınız. Sorunuzdan, en yararlı bulabileceğiniz gibi görünüyor.
Bash gibi bazı mermiler, açıkça POSIX uyumlu bir şekilde davranmaları istenmedikçe standart olmayan bir biçim kullanır. Bash'te varsayılan export -polarak aynı çıktıyı verir declare -x.
$ bash -c 'export -p | grep HOME='
declare -x HOME="/home/ek"
$ bash -c 'POSIXLY_CORRECT= export -p | grep HOME='
export HOME="/home/ek"
$ bash -c 'set -o posix; export -p | grep HOME='
export HOME="/home/ek"
$ bash --posix -c 'export -p | grep HOME='
export HOME="/home/ek"
$ ln -s /bin/bash sh
$ ./sh -c 'export -p | grep HOME=' # Invoking bash as sh also puts it in POSIX mode.
export HOME="/home/ek"
Zsh, POSIX uyumluluğu etkinleştirilmiş olsa bile standart olmayan bir biçim gösterir:
$ zsh -c 'export -p | grep HOME='
typeset -x HOME=/home/ek
$ zsh -c 'emulate -R sh; export -p | grep HOME='
typeset -x HOME=/home/ek
$ ln -s /bin/zsh sh
$ ./sh -c 'export -p | grep HOME='
typeset -x HOME=/home/ek
Her durumda, ardından bir sözcük arayarak taşınabilir ifadeleri (alıntılanabilir) çıkarabilirsiniz =. Bu kadar uzun hemen önce gelmez yaptığı gibi, on line Önceki kelimelere dayanmaz =oldukları olmamalı. Örneğin:
% export -p | grep -oE '\w+=.*'
HOME=/home/ek
LANG=en_US.UTF-8
LESSCLOSE='/usr/bin/lesspipe %s %s'
....
Not değil tüm girişler mutlaka var =. Bunun nedeni değişkenlerin ayarlanamaması ancak dışa aktarılabilmesidir. Bu girişler, grepyukarıdaki komutla filtrelenir ; bu, istediğiniz gibi olabilir veya olmayabilir.
Çoğu zaman, sadece çıkış incelemek istiyoruz ve girişleri öncesinde Biz burada son bakım alışkanlık export, declare -x, typeset -x, ya da başka bir şey. Sonra sadece koş export -p.
Bu komutları her kabuğun resmi paketlenmiş sürümleriyle Ubuntu 16.04 LTS'de test ettim .