$ {GZIP_BINDIR - '/ bin'} 'in bash'deki anlamı nedir?


13

Herkes bu komutun ne anlama geldiğini açıklayabilir mi?

PATH="${GZIP_BINDIR-'/bin'}:$PATH"; export PATH

Yanıtlar:


19

${GZIP_BINDIR-'/bin'}bir bashparametre genişletme modelidir. Gönderen man bash:

${parameter:-word}
              Use Default Values.  If parameter is unset or null, 
the expansion of word is substituted.  Otherwise, the  value  of parameter
is substituted.

Bu porsiyondan hemen önce man sayfasının (bildirim için @jwodder sayesinde):

Omitting the colon results in a test only for a parameter that is unset.

Manpage'in dediği gibi, değişkenin varsayılan değerini ayarlayacaktır GZIP_BINDIR. Eğer GZIP_BINDIR(kullanmadığınız olarak null dışında önceden ayarlanmış bir değere sahip :bu değer kullanılacaktır), aksi /bindeğişkenin değeri olarak kullanılacaktır GZIP_BINDIR.

Öte yandan null değerleri de test etmek istiyorsanız, bu kalıbı kullanın (include :):

${GZIP_BINDIR:-'/bin'}

Bundan sonra, $PATHdaha önce tuttuğu değerlere genişletilecektir. Yani, PATHdaha önce sahip olsaydı:

/usr/sbin:/usr/bin

Şimdi PATHolacaksınız (dikkate GZIP_BINDIRalınmadı):

/bin:/usr/sbin:/usr/bin

export PATHbunu PATHtüm alt süreçlerin kullanımına sunacaktır .


" Sana bir kaçırmış düşünüyorum :içinde${GZIP_BINDIR-'/bin'} Şart değil". ${parameter-word}man sayfasında da görünmese de geçerlidir.
nyuszika7h

@ nyuszika7h Evet .. daha önce bilmiyordum ..
garip

Bilgisayarımdaki bash manpage'de, aşağıdaki bölümün hemen üstündeki paragrafta :-: " Alt dize genişletmesi gerçekleştirilmediğinde, aşağıda belgelenen formları kullanarak (örn. :-), bash ayarlanmamış veya null bir parametre olup olmadığını test eder. İki nokta üst üste işareti yalnızca ayarlanmamış bir parametre için test
sonucunu verir

Bir yan not olarak, ayarını birleştirebilir PATHve exporttek komutla içine aşağıdaki gibi:export PATH="${GZIP_BINDIR-'/bin'}:$PATH"
Paddy Landau

8

Parametre genişletmesinin içindeki tire işaretinden önce gerçekten iki nokta üst üste yok ${GZIP_BINDIR-'/bin'}mu?

Bu tür bir yapı neredeyse her zaman iki nokta üst üste ile yazılır, ${GZIP_BINDIR:-'/bin'}yani "$ GZIP_BINDIR NULL veya unset ise, onu" / bin "olarak ayarlayın"

Ancak, verilen sözdizimi olan geçerli, ama nadir. ${GZIP_BINDIR-'/bin'}(iki nokta üst üste işareti yok) "$ GZIP_BINDIR ayarlanmamışsa, '/ bin' olarak ayarlayın" anlamına gelir. Ayarlanmışsa (bildirilmişse) ancak kendisine atanan hiçbir şey yoksa (örn. NULL) hiçbir şey eklenmez.

Kolon olarak gerçi burada bir hata olabilir aşağıdaki değişken yapı (...} :$ PATH ...) olacak $ GZIP_BINDIR seti ama null ise hala yerleştirilebilir. Bu, $ PATH başına bir iki nokta üst üste ekleyeceğinden, önce geçerli dizinin aranmasına neden olur.

Çoğu kişi tarafından bir güvenlik sorunu olarak kabul edilir, çünkü standart komutlarla aynı ada sahip kötü amaçlı bir programın sadece geçerli dizine yerleştirilerek çalıştırılmasını kolaylaştırır.

$ GZIP_BINDIR ayarlanmış ancak NULL (boş) olarak ayarlanmışsa $ PATH değerini değiştirmeden bırakmak için doğru sözdizimi ${GZIP_BINDIR-'/bin:'}$PATH; export PATH

$ GZIP_BINDIR ayarlanmamışsa veya ayarlanmış ancak NULL ise $ PATH değerini değiştirmeden bırakmak için doğru sözdizimi ${GZIP_BINDIR:-'/bin:'}$PATH; export PATH


2

Bu komut PATH değişkenini güncelleştirir.

Bu PATH, yürütülebilir programların bulunduğu dizin kümesini belirten bir ortam değişkenidir.

PATH="${GZIP_BINDIR-'/bin'}:$PATH";

Bu GZIP_BINDIR, önceki PATH'ye çıkış başka bir değişkenin değerini ekler, bunun yerine / bin kullanır ve bunu PATH'a ekler

export PATH

İhracat tüm alt süreçleri için kullanılabilir PATH ayarlamak için kullanılan ve Okuma altkabuklarda olan bu hakkında daha fazla bilgi için

Bunun statik olmadığını ve kabuğunuzdan çıktıktan sonra onu kaybedeceğinizi not etmelisiniz.

Bu PATH düzenlemesini kalıcı hale getirmek için bu satırları .bashrc

gedit .bashrc

ve satırı ekle

export PATH="${GZIP_BINDIR-'/bin'}:$PATH"

sonra komutu çalıştırın

source .bashrc

GZIP_BINDIR değişkendir
Maythux

doğru olmayan ne Hayır değil mi? benim de indirildi
Maythux

Neden iniyor ?!
Maythux
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.