Saya punya masalah shell yang tampak aneh, dengan perintah di $ PATH bahwa shell (ksh, berjalan di Linux) tampaknya pengecut menolak untuk memohon. Tanpa sepenuhnya memenuhi syarat perintah, saya mendapatkan:
# mycommand
/bin/ksh: mycommand: not found [No such file or directory]
tetapi file tersebut dapat ditemukan dimana:
# which mycommand
/home/me/mydir/admbin/mycommand
Saya juga secara eksplisit melihat direktori itu di $ PATH:
# echo $PATH | tr : '\n' | grep adm
/home/me/mydir/admbin
Exe di lokasi itu tampak normal:
# file /home/me/mydir/admbin/mycommand
/home/me/mydir/admbin/mycommand: setuid setgid ELF 64-bit LSB executable, x86-64, version 1 (SYSV), for GNU/Linux 2.6.4, dynamically linked (uses shared libs), not stripped
# ls -l mycommand
-r-sr-s--- 1 me mygroup 97892 2012-04-11 18:01 mycommand
dan jika saya menjalankannya secara eksplisit menggunakan jalur yang sepenuhnya memenuhi syarat:
# /home/me/mydir/admbin/mycommand
Saya melihat output yang diharapkan. Pasti ada sesuatu yang membingungkan shell di sini, tapi aku bingung apa yang bisa terjadi?
EDIT: menemukan apa yang tampak seperti pertanyaan serupa: Biner tidak akan mengeksekusi ketika dijalankan dengan path. Misalnya> ./ Program tidak akan berfungsi tetapi> program bekerja dengan baik
Saya juga menguji lebih dari satu perintah seperti itu di $ PATH saya, tetapi hanya menemukan satu:
# for i in `echo $PATH | tr : '\n'` ; do test -e $i/mycommand && echo $i/mycommand ; done
/home/me/mydir/admbin/mycommand
EDIT2:
Sampai pagi ini, masalahnya telah hilang , dan saya sekarang dapat mengeksekusi dieksekusi.
Itu bisa dianggap sebagai memvalidasi saran untuk logout dan login, tetapi saya telah melakukan itu tadi malam tanpa hasil. Logout / login itu juga harus melakukan yang setara dengan menjalankan perintah 'hash -r' yang disarankan (yang fwiw juga tampaknya menjadi ksh builtin, dan bukan hanya bash builtin).
Menanggapi beberapa jawaban:
Ini adalah executable bukan skrip (lihat referensi ELF di output perintah file).
Saya tidak berpikir bahwa suatu langkah akan membantu. Itu akhirnya memaksa perintah untuk menjalankan sepenuhnya memenuhi syarat. Saya kira saya bisa melakukan strace menempel pada shell saat ini, tetapi karena saya tidak bisa lagi menegur tidak ada gunanya mencoba itu.
tidak ada titik koma di $ PATH. Karena saya tidak dapat lagi menegur, saya tidak akan mengacaukan pertanyaan ini dengan $ PATH lengkap.
mencoba shell lain (yaitu bash) akan menjadi sesuatu yang juga telah saya coba, seperti yang disarankan. Dengan masalah yang hilang, saya sekarang tidak akan tahu apakah itu akan membantu.
Saya juga menyarankan agar saya memeriksa izin direktori. Melakukannya, untuk masing-masing direktori hingga yang ini saya melihat:
# ls -ld $HOME $HOME/mydir $HOME/mydir/admbin
drwxr-xr-x 10 me root 4096 2012-04-12 12:20 /home/me
drwxrwsr-t 22 me mygroup 4096 2012-04-12 12:04 /home/me/mydir
drwxr-sr-x 2 me mygroup 4096 2012-04-12 12:04 /home/me/mydir/admbin
Kepemilikan direktori $ HOME kacau (tidak boleh root grup). Itu bisa menyebabkan masalah lain, tapi saya tidak melihat bagaimana ini menyebabkan hal ini.