basit komutlar için alias vs export


33

Gibi basit komutlar lessiçin, bir takma ad yapmak veya seçenekleri dışa aktarmak daha mı iyidir? Birinin diğerinden bir faydası var mı?

Örneğin, lessher zaman -Rham karakterleri gösterme seçeneğini kullanmak istersem , bu iki çözüm de işe yarar :

  1. export LESS='-R'
  2. alias less='less -R'

Bunun gibi basit bir durum için, birinin diğerine göre faydası var mı? Birinin soruna neden olacağı ve diğerinin yaratmayacağı senaryolar?

Googling'in yanı sıra birkaç sayfa infove mansayfa okudum , ancak hala bu konuda sıkışıp kaldım.


1
Hayır, gerçekten kişisel tercihime bağlı. Daha fazla görüşe dayalı olduğu için bunu kapatmak için oy kullandım.
slm

Üç çözüm daha: bir kabuk işlevi oluşturun (yalnızca kabukta çalışır ancak etkileşimli olması gerekmez); ~ / bin ya da her yerde bir komut dosyası oluşturun (kabuğun başlangıcına ek yükü vardır ancak derhal çalışan kabuklarda ve diğer programlarda çalışır ve kalıcıdır); programa özgü yapılandırma dosyaları ( lesskullanarak yapabilirsiniz lesskey)
deltab

3
@slm Fikri temelli değildir veya en azından öyle olması amaçlanmamıştır. Biri çok daha fazla ek yük gerektirebilir ve gereksiz yere, özellikle daha karmaşık bir senaryoda, kaynakları kullanabilir. Biri * nix dünyasında geleneksel olarak daha doğru olabilir, ya da belki bir yerlerde resmi bir standart bile olabilir. Programcılar, her zaman niyetleri ve amaçları için aynı hedefe ulaştığında bile, her zaman "özensiz kodlama" konusunda sinirlenirler.
skittleys

Yanıtlar:


30

İkisi arasındaki bir fark, takma adın sadece bir kabuk özelliği olmasıdır. Ortam değişkenleri tüm alt işlemler tarafından miras alınır (bilerek silinmediği sürece).

Çevre değişkeni bile işin daha yatkın olacağını lessböyle (örneğin başka bir kabuk aracılığıyla dolaylı olarak incelenebilir başlatılır tcsh), man, vim, psql, vb


3
Özellikle, takma adlar yalnızca etkileşimli kabuklarda çalışır: bunları bazen isteyebileceğiniz kabuk komut dosyalarında kullanamazsınız. bash -c 'alias ll="ls -l"; ll'takma adı kullanmayacak.
DeltaB

ah, bunu bilmiyordum! Öyleyse export LESS='-R'.zshrc dosyam varsa, bir zsh oturumu açın ve ardından aynı oturumda (.bashrc'de dışa aktarma olmadan) bash'a geçin, ortam değişkeni hala ayarlanacak mı? Her ikisinin de kaybolacağını düşünürdüm ....
skittleys 16:14

@deltab ah, evet, grep'in boyama sorunları sayesinde bu ayrımı biliyorum. Bu konuya işaret ettiğiniz için teşekkür ederiz.
skittleys

1

Büyük ölçüde kullandığınız araca bağlıdır. Her ikisini de kullanmanıza izin veren araçlar, yalnızca bir tanesine izin veren araçlar olacaktır.

Başkaları tarafından çağrılan ve ortam değişkenlerini okuyan ve aynı anahtarları kabul eden komutlar vardır, ancak her birine aynı anahtarın eklenmesi make, burada çevre değişkenlerinin parladığı gibi derleyiciler gibi bir güçlüktür. Değişkeni ayarladın ve unut gitsin. Aynı zamanda geçici olabileceği ve tek bir komut için çalışabileceği bir artı.

Alt satırda, bir tercihler materyali ve görev için en iyi eylemdir, takma ad oluşturmanın ortam değişkeninden daha kolay ve kalıcı olduğu zamanlar olacak ve diğer zamanlarda istediğiniz şekilde çalışan bir dizi araca ihtiyacınız olacak çevre değişkeni seviyorum.

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.