Tam yolunu kullanmadan Terminal'den belirli bir program çalıştırılamıyor


9

ds9Terminalden bir program çalıştırmak istiyorum . Program, çalıştırarak belirlediğim PATH'de açıkça:

which ds9
/Users/evgenii/miniconda3/envs/iraf/bin/ds9

Ama komutu yazarak çalıştırdığımda ds9, bana aşağıdaki hatayı gösterir:

-bash: /Applications/ds9.app/Contents/MacOS/ds9: No such file or directory

Tam yolu aşağıdaki gibi kullanırsam hala iyi çalıştırabilirim:

/Users/evgenii/miniconda3/envs/iraf/bin/ds9

Neler oluyor? Neden kaçmaya çalışıyor /Applications/ds9.app?

İzinler aşağıdaki gibidir:

-rwxrwxr-x@ 1 evgenii  staff  18613852  9 Nov 20:13 /Users/evgenii/miniconda3/envs/iraf/bin/ds9

Güncelleme:

İşte çalışan type -a ds9komutun çıktısı :

type -a ds9
ds9 is aliased to `/Applications/ds9.app/Contents/MacOS/ds9 -xpa no'
ds9 is /Users/evgenii/miniconda3/envs/iraf/bin/ds9

4
Kullanma which. Bu harici bir program, bu yüzden kabuk takma adları hakkında bilgi veremez.
Barmar

Komutlarla çalışmak için alın: PATHyerine aliasve typeyerine kullanın which.
dan

Yanıtlar:


19

Komut görünüşe göre kırık bir takma adla takılmış. İlk olarak, tüm maçları için onay ds9içinde PATHortam değişkeni aşağıdaki komutu yürüterek:

type -a ds9

Güncellenmiş sorunuza göre, type -a ds9komutun çıktısından anlaşılıyor, bir takma ad gerçek komutu gölgeliyor.

Diğer komutu yok sayarak ve tam yolu belirtmeden gerçek komutu yürütmek için komutun önüne bir \(ters eğik çizgi) karakteri ekleyin . Bu, bash tanımlı diğer adları yok sayar.

Her seferinde komuttan önce ters eğik çizgi eklemek istemiyorsanız, takma adın nerede oluşturulduğunu bulun ve kaldırın ya da gerçek komutla takma adı geçersiz kılın.


1
ds9Takma tanımı en muhtemelen ~/.bashrcve (o sorun bu tür yol açan kötü bir yöntem olduğu için) orada çıkarılmalıdır. grep ds9 ~/.bashrconaylayacak.
dan

4

Bunun asker için çözüldüğünü görüyorum, ancak gelecekteki okuyucular için komutun karma hale getirildiği ve daha sonra dosyanın kaldırıldığı da olabileceğini belirtmek istiyorum . (Bilgi için bakınız help hash.)

type -a commandnamebunu size göstermeyecek, sadece type commandnameolacak.

Bu durumda, hash -d ds9gereken her şey olurdu.

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.