Parametre ve diğer genişletme türleri, komut okunduğunda, yürütülmeden önce gerçekleştirilir.
İlk sürüm,, LANG=Ja_JP bash -c "echo $LANG"tek bir komuttur. Bu şekilde ayrıştırıldıktan sonra, herhangi bir şey yürütülmeden önce değerine $LANGgenişletilir en_US. Bir kez bashbu bir süreç çatallar ekler, giriş işlem tamamlandıktan LANG=Ja_JPbeklendiği gibi çevreye ve çalıştırır bash -c echo en_US.
Tek tırnak, yani LANG=Ja_JP bash -c 'echo $LANG'çıktılar ile genişletmeyi önleyebilirsiniz Ja_JP.
Komutun bir parçası olarak değişken atamanız olduğunda atamanın kabuğunuzun komutunu değil, yalnızca o komutun ortamını etkilediğini unutmayın.
İkinci sürüm, LANG=Ja_JP; bash -c "echo $LANG"aslında sırayla yürütülen iki ayrı komuttur. Birincisi, komut olmadan basit bir değişken atamasıdır, bu nedenle geçerli kabuğunuzu etkiler.
Böylece, bir parçanın yüzeysel ayrımına rağmen, iki parçacığınız temel olarak farklıdır ;.
Tamamen konu dışı, ancak bir .UTF-8zaman ayarı eklemenizi tavsiye edebilirim LANG. Bugünlerde 21. yüzyılda Unicode kullanmamak için iyi bir neden yok.