(Unix / Linux) Aynı adda farklı komutlar nasıl uygulanır?


2

Bilgisayarımda iki ayrı dosya var.

which execfile
/usr/local/bin/
/usr/bin/

bu yüzden iki farklı dizinde aynı isimde iki dosya var. Hangi komutu çalıştıracağımı tam olarak nasıl belirleyebilirim?

Teşekkürler.

Yanıtlar:


8

türünü çalıştırdığınızda komutun tam yolunu belirleyebilirsiniz:

/usr/bin/execfile

veya

/usr/local/bin/execfile

dosyayı tam olarak çalıştırmak için


kthanks, bu komutlardan birini varsayılanı seçmenin bir yolu var mı?

6
Evet, / usr / bin / execfile komutunun varsayılan olmasını istiyorsanız, / usr / bin / 'in / usr / local / bin / içinde olduğundan emin olun PATH kabuk ortamı değişkeni.
Bertrand Marron

Doğru cevap için tusbar +1;)


1

Bir komutu çalıştırmaya çalışırken foo , foo PATH ortam değişkeni tarafından belirtilen dizinlerde, belirtilenlerle aynı sırada aranır. Bundan kaçınmak istiyorsanız, yürütülebilir dosyanın tam yolunu yazın.

Bunu bir terminale yazın:

echo $PATH

Gerçek PATH ortam değişkeni içeriğinizi görmek için.

Örneğin, her zaman / bin içinde ilk çalıştırılabilir dosyaları çalıştırmak istiyorsanız, / bin'in önce $ PATH içinde geldiğinden emin olun. PATH dosyasını, ana dizininizdeki .profile dosyasında belirleyebilirsiniz. Bu nedenle yukarıdaki örnekte, dosyayı düzenleyin ve bu satırı sonuna yerleştirin:

dışa aktarma PATH = / bin: $ PATH

Bu sadece kullanıcı için işe yarayacak. Eğer $ PATH sistem çapında bir şekilde belirtmek istiyorsanız (.profile içinde değiştirenler dışındaki tüm kullanıcılar için işe yarar), / etc / profile dosyasına yukarıdaki satırın aynısını ekleyin (root yetkilerine ihtiyacınız olacak .)

Ayrıca, profil dosyalarının yalnızca başlangıçta ayrıştırıldığını unutmayın. Bu, eğer kişisel .profile dosyanızı düzenlerseniz, kabuğunuzu yeniden ayrıştırmanız gerekecektir. Bunu çıkış yapıp tekrar giriş yapmayı ya da başka bir şekilde yazmayı yapabilirsiniz:

kaynak ~ / .profile

Sistem genelinde değişiklik için, yazın

kaynak / etc / profile

Bu, geçerli kabuk oturumunuzun profil dosyasını yeniden ayrıştırmasını sağlar. Tamamen önyükleme sisteminizin yeniden ayrıştırılmasını istiyorsanız, oturumunuzu yeniden başlatmanız gerektiğini düşünüyorum.

Ayrıca, bash dışında bir kabuk kullanırsanız bunun değişebileceğini unutmayın.

Bash man sayfasında bazı ilginç bilgiler bulabilirsiniz: http://linux.die.net/man/1/bash

"Komut Yürütme" bölümüne bakın.


Btw bunu sor superuser.com

1

~ / .Profile dosyasına bir takma ad yazın:

alias execfile='/usr/local/bin/execfile'

Bir sonraki oturum açtıktan sonra doğru sürüm otomatik olarak seçilecektir. Diğerlerine tam yolla başla.


1

Ayrıca her ikisinin de aynı dosyaya ait olup olmadığını kontrol edin - link olabilir gibi

ls -al /usr/bin
ls -al /usr/local/bin

ve birbirlerine bağlı olup olmadıklarını kontrol edin

eğer bağlanırlarsa, herhangi bir fark yaratamazsınız. aksi takdirde tam yolu belirtmeniz gerekir


1
Bağlantılı olup olmadıklarını gösterecektir (eğer "/ usr / bin / execfile - & gt; / usr / local / bin / execfile" gibi bir şey göreceksiniz). Bağlantılı olup olmadıklarını görmek için, ls -li /usr/bin/execfile /usr/local/bin/execfile ve inode numaralarını karşılaştırın.
Dennis Williamson

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.