Saya ingin menjalankan program ds9
dari Terminal. Program ini jelas di PATH, yang saya tentukan dengan menjalankan:
which ds9
/Users/evgenii/miniconda3/envs/iraf/bin/ds9
Tetapi ketika saya menjalankan perintah dengan mengetik ds9
, itu menunjukkan kepada saya kesalahan berikut:
-bash: /Applications/ds9.app/Contents/MacOS/ds9: No such file or directory
Saya masih dapat menjalankannya dengan baik jika saya menggunakan path lengkap sebagai berikut:
/Users/evgenii/miniconda3/envs/iraf/bin/ds9
Apa yang sedang terjadi? Mengapa ini mencoba dijalankan /Applications/ds9.app
?
Izin adalah sebagai berikut:
-rwxrwxr-x@ 1 evgenii staff 18613852 9 Nov 20:13 /Users/evgenii/miniconda3/envs/iraf/bin/ds9
Memperbarui:
Berikut ini adalah output dari menjalankan type -a ds9
perintah:
type -a ds9
ds9 is aliased to `/Applications/ds9.app/Contents/MacOS/ds9 -xpa no'
ds9 is /Users/evgenii/miniconda3/envs/iraf/bin/ds9
which
. Ini adalah program eksternal, jadi tidak bisa membedakan alias shell.PATH
daripadaalias
dantype
bukanwhich
.Jawaban:
Perintah ini tampaknya alias alias rusak. Pertama, periksa semua kecocokan
ds9
dalamPATH
variabel lingkungan, dengan menjalankan perintah berikut:type -a ds9
Sesuai pertanyaan Anda yang diperbarui, jelas dari output
type -a ds9
perintah, bahwa alias membayangi perintah yang sebenarnya.Untuk menjalankan perintah yang sebenarnya dengan mengabaikan alias, dan tanpa menentukan path lengkap, tambahkan karakter
\
(backslash) sebelum perintah. Ini mengabaikan alias bash yang didefinisikan.Jika Anda tidak ingin menambahkan backslash di depan perintah setiap kali, cari tahu di mana alias dibuat, dan hapus, atau ganti alias dengan perintah yang sebenarnya.
sumber
ds9
definition alias yang paling mungkin di~/.bashrc
dan harus dihapus ada (karena itu metode yang buruk mengarah ke masalah seperti ini).grep ds9 ~/.bashrc
akan mengkonfirmasinya.Saya melihat ini diselesaikan untuk penanya, tetapi untuk pembaca masa depan saya ingin menyebutkan bahwa itu juga bisa menjadi kasus bahwa perintah itu di- hash dan kemudian file dihapus. (Lihat
help hash
untuk info.)type -a commandname
tidak akan menunjukkan itu, hanyatype commandname
akan.Dalam hal ini,
hash -d ds9
akan menjadi semua yang dibutuhkan.sumber