Hileli takma ad bildirimini nasıl bulabilirim?


37

Belirli bir aliasbildirimin nerede yapıldığını bulmaya çalışıyorum . Takma ad aradığımı bildiğim tüm yerleri araştırdım:

  • ~ / .Bashrc
  • ~ / .Bash_profile
  • / Etc / bashrc
  • / Etc / profile

Şanssız.

Bunun bir aliasnedeni olduğunu biliyorum çünkü which COMMANDyaptığım zaman:

alias COMMAND='/path/to/command'
    /path/to/command

Hangi dosyayı aliasyalnızca aliasadını bilen olduğunu bildirmenin bir yolu var mı ?


3
Bir ilgili soru ortam değişkenleri yerine takma adları hakkında. Temel olarak, takma ad herhangi bir yere ayarlanmış olabileceğinden kolay bir yol yoktur. set -xSize önerildiği gibi koymaya çalışın ve bunun sizin için daraltılıp daramayacağını görün.
jw013

1
Sen sokmanız gerekiyor set -xüstündeki /etc/bash_profileya /etc/bashrc. Neden sadece çalışmaz bash -i -xya bash -l -x?
Mikel

Yanıtlar:


30

Ben olmazdı /etc/profile.d/kusurlu için alias.

Bulmak için aşağıdakileri de yapabilirsiniz:

grep -r '^alias COMMAND' /etc

Bu özyinelemeli grepile başlayan bir satır arayan dosyalar aracılığıyla olacaktır alias COMMAND.

Eğer diğerleri başarısız olursa, bunu sonuna yaz. ~/.bashrc

unalias COMMAND

26

Deneyebileceğiniz birkaç şey var:

  1. bash -vKabuk başlatma sırasında hangi satırların okunmakta olduğunu görmek için kullanın .
  2. bash -xKabuk başlatma sırasında hangi komutların çalıştırıldığını görmek için kullanın .
  3. sadece bir başlangıç ​​dosyası ile çalıştır

bash -v

-v Seçenek yapar bashbunu okur gibi okuyan her komut dosyasından Her satırı yazdırmak.

Koşarak başla

bash -i -v >bash-i.out 2>&1

5-10 saniye bekleyin, ardından düğmesine basın Ctrl+C.

Bu, bash-i.outbirleştirilmiş (veya birleştirilmiş) tüm başlangıç ​​dosyalarınız gibi tek bir dosya verecektir .

Sonra lessdosyayı açın ve kullanarak takma adı arayın /aliasname.

Şimdi, diğer adın dosyadaki diğer satırlarla ilişkili olarak göründüğü yeri karşılaştırın. Örneğin, çoğu sistemde, /etc/bash.bashrcüstünde yazan /etc/bash.bashrcve yazan bir yorum ~/.bashrcvardır.

Üstünüzün üstünde ise ~/.bashrc, muhtemelen /etctakma adı tanımlayan bir başlangıç ​​dosyasıdır , aksi halde sizin ~/.bashrcveya içinde sourceveya .( veya nokta komutuyla) içeren bir dosyadadır.

Bu takma adı göstermiyorsa, deneyin

bash -l -v >bash-l.out 2>&1

Bu bir giriş örneğin, bazı farklı başlangıç dosyalarını okur kabuk olmak Bash söyler /etc/profileve ~/.bash_profileyerine /etc/bash.bashrcve ~/.bashrc.

bash -x

Eğer bash -vsize kesin bir cevap vermez, çalıştırmayı deneyin bash -xyerine kendi kabuk okuyor çizgiler yerine, kabuk çalıştığı komutları yazdırır.

Yöntem, esas değişiklik dışında, yukarıdaki gibi aynı -viçin -x. (Gerekirse ikisini birlikte kullanabilirsiniz.)

Sadece bir başlangıç ​​dosyası ile çalıştır

bash -i --rcfile="$HOME/.bashrc"

ve bak bakalım takma ismin var mı?

İle aynı deneyin rcfileiçin sette /etc/bash.bashrcsistem bunu varsa.

O zaman dene

bash -l --rcfile="$HOME/.bash_profile"

ve her bash başlangıç vardır dosyasıyla aynı şeyi profilemesela adında, değişim $HOME/.bash_profileiçin /etc/profile.

Takma adı göründüğü her hangi yol, size bakmaya başlamanız gereken dosyayı söyler.


2

Belki senin .xinitrc? Ayrıca eğer görmek için kontrol etmelidir .bashrcya .bash_profileonlarda kaynağı diğer dosyaları. Örneğin, tüm takma adlarımı bu komut tarafından başvurulan ayrı bir dosyada tutuyorum:

[ -f ~/.bash_alias ] && source $HOME/.bash_alias

Ayrıca yardımcı olabilecek bazı sorular: Bu normal mi yoksa kök kullanıcı mı? Hangi komut bu? Linux'un tadı ne?


0

Takma ad tanımlarımı koymanın çok yaygın bir uygulamasını takip ediyorum.

~/.bash_aliases

ve sonra bunu .bashrc den ile çağırmak

[ -f ~/.bash_aliases ] && source $HOME/.bash_aliases

sanırım ikinci komutunuzda .bash_alias yerine .bash_aliases'i kastediyor musunuz?
17:17
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.