쉘 (ksh, Linux에서 실행 중)이 겁쟁이 호출을 거부하는 $ PATH의 명령으로 기괴한 것처럼 보이는 쉘 문제가 있습니다. 명령을 완전히 규정하지 않으면 다음과 같은 이점이 있습니다.
# mycommand
/bin/ksh: mycommand: not found [No such file or directory]
그러나 파일은 다음으로 찾을 수 있습니다.
# which mycommand
/home/me/mydir/admbin/mycommand
또한 $ PATH에 해당 디렉토리가 명시 적으로 표시됩니다.
# echo $PATH | tr : '\n' | grep adm
/home/me/mydir/admbin
해당 위치의 exe는 정상적으로 보입니다.
# 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
그리고 완전한 경로를 사용하여 명시 적으로 실행하면 :
# /home/me/mydir/admbin/mycommand
예상 출력이 표시됩니다. 뭔가 분명히 여기 껍질을 혼란스럽게하지만, 나는 그것이 무엇인지 상실하고 있습니까?
편집 : 비슷한 질문처럼 보이는 것을 찾으십시오 : 경로로 실행할 때 바이너리가 실행되지 않습니다. 예 :> ./ 프로그램이 작동하지 않지만> 프로그램이 정상적으로 작동 함
또한 $ PATH에서 하나 이상의 이러한 명령을 테스트했지만 하나만 찾습니다.
# for i in `echo $PATH | tr : '\n'` ; do test -e $i/mycommand && echo $i/mycommand ; done
/home/me/mydir/admbin/mycommand
EDIT2 :
오늘 아침부터 문제가 사라졌으며 이제 실행 파일을 실행할 수 있습니다.
로그 아웃 및 로그인 제안을 확인하는 것으로 생각할 수 있지만 지난 밤에 성공하지 못했습니다. 이 로그 아웃 / 로그인은 제안 된 'hash -r'명령을 실행하는 것과 동등한 작업을 수행해야합니다 (fwiw는 bash 내장이 아닌 ksh 내장으로 나타남).
일부 답변에 대한 답변 :
스크립트가 아닌 실행 파일입니다 (파일 명령 출력의 ELF 참조 참조).
나는 strace가 도움이 될 것이라고 생각하지 않습니다. 결과적으로 명령이 정규화되어 실행됩니다. 현재 쉘에서 strace 연결을 수행 할 수 있다고 가정하지만 더 이상 재현 할 수 없으므로 시도 할 필요가 없습니다.
$ PATH에 세미콜론이 없습니다. 더 이상 재현 할 수 없으므로 전체 $ PATH 로이 질문을 어지럽히 지 않습니다.
다른 쉘 (예 : bash)을 시도하면 제안 된 것처럼 시도했을 수도 있습니다. 문제가 해결되면 도움이되는지 알 수 없습니다.
또한 디렉토리 권한을 확인하는 것이 좋습니다. 이렇게하면 각 디렉토리 마다이 디렉토리까지 볼 수 있습니다.
# 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
$ HOME 디렉토리 소유권이 엉망입니다 (루트 그룹이 아니어야 함). 그로 인해 다른 문제가 발생할 수 있지만 이것이 어떻게 발생했는지 알 수 없습니다.