bash alias sudo ile devam etmiyor


1

.Bash_profile programımı çalıştırdığımda çalışmamın bir yolu olup olmadığını merak ediyorum.

Örneğin, ben ayarladım alias emerge='emerge -av' böylece yazılımı yükleyebilirim ve indirme ve yüklemeden önce devam etmek isteyip istemediğimi her zaman bana soracaktır. Ancak ben sadece farkettim ki sudo emerge foo, sadece düz komut varsayılandır emerge foo yerine emerge -av foo.

Bunu düzeltmek için akla gelen tek şey, takma adı kökündeki .bash_profile dosyasına koymaktır, ancak buna eklemek zorunda kalmak istemem çünkü her zaman iki yerde değişiklik yapmak zorunda kalacağım. kendi profilim

Aşina olmadığım başka bir yol var mı?


Takma adı kökünün profiline koymaya çalıştım ama işe yaramadı.
Oscar Goldman

Yanıtlar:


5

Bash,

alias sudo='sudo '

bash'ın sonra gelen takma adları genişletmesine neden olur sudo.


1
Lütfen bunun neden işe yaradığını açıklayabilir misiniz?
fmanco

4
Bash'ın takma adları nasıl genişlettiğinin bir parçası. Bash manpage sayfasından: "Takma ad değerinin son karakteri boşsa, takma adı takip eden bir sonraki komut sözcüğü ayrıca takma ad genişletmesi için de kontrol edilir."
Gordon Davisson

Bunun neden birlikte çalışmadığı hakkında herhangi bir fikir: stackoverflow.com/a/19739018/520061 veya nasıl çalışması için?
Sebastian Blask

@SebastianBlask: Çünkü temelde kaçıyorsun sudo function _foo() { ...; }; _foo - bu, bash yerleşik sözdizimini, sudo. Nasıl çalışacağına ilişkin olarak, osirisgothra'nın bu cevabı hakkında söyleyebileceğim tek şey: 1) themonolith.com/wp-content/uploads/why-would-you-do-that.jpg 2) hayır, cidden, lanet nokta ne bir işlev tanımlarken içeride sadece bir takma ad bir işlev kullanarak ? 3) ne yazık ki, işlevlerini çağıramazsınız. sudo, bu yüzden içeriklerini bir kabuk betiğine koymanızı tavsiye ederim.
grawity

@grawity çok sudo cd çalışmıyor Mesele, sudo'yu normal bir kullanıcı olarak kullanabileceğim komutlarla kullanabilmek. Bunu bir kabuk betiği haline getirebileceğimi düşündüm, ama sonra tüm yolumu sudo ile yazmalıyım, ki normal kullanıcımla yapmak zorunda kalmam ama eğer mümkün değilse ...
Sebastian Blask

2

Bunu yapmanın diğer yolu (rağmen bu Grawity'nin cevabını önerdiğim belirli bir örneği) kullanmak -E Çevre miras için sudo bayrak.

   -E          The -E (preserve environment) option will override the
               env_reset option in sudoers(5)).  It is only available when
               either the matching command has the SETENV tag or the
               setenv option is set in sudoers(5).
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.