저는 Solaris 시스템에 텔넷으로 연결하고 있는데 스크립트에서 위의 오류가 발생합니다. 나는 이것이 일반적인 문제라는 것을 알고 있으며 해결책은 내 프로필에서 "stty Erase ^H" 줄을 확인하는 것이지만 찾을 수 없습니다.
.profile에는 stty에 대한 참조가 없으며 어디에도 .cshrc가 없습니다. 홈 디렉토리에서 grep을 수행했지만 아무것도 얻지 못했습니다.
이 문제의 다른 원인이 있습니까? 온라인의 모든 솔루션은 .profile 또는 .cshrc를 참조합니다. 감사해요.
답변1
-
프로필을 추적하려면 인쇄용 및 옵션으로 시작하는 이름을 사용하여 로그인 쉘을 호출해 보십시오 -x
. 로그인 쉘이 무엇인지 알아보려면 getent passwd $USER
로그인 쉘이 행의 마지막 필드입니다(보통 /bin/something
). 이름이 로 시작하는 쉘을 호출하려면 -
이름이 로 시작하는 심볼릭 링크를 생성하고 -
실행하십시오. 예를 들어, 로그인 쉘이 ksh인 경우:
ln -s /bin/ksh ./-ksh
./-ksh -x
rm ./-ksh
이것이 csh에서 작동하는지 잘 모르겠습니다. 흥미로운 내용을 찾지 못했다면 /etc
도트 파일을 살펴보세요.
grep stty /etc/* ~/.* 2>/dev/null
답변2
나는 이것을 가지고 있으며 stty
.kshrc에 있습니다. .kshrc는 모든 ksh 스크립트(대화형 및 비대화형)에서 시작됩니다. 파일(지금은 tty가 아님)인 stdin에서 작업을 시도하고 오류와 함께 실패하는 스크립트를 실행하는 경우 stty는 계속 실행됩니다.
답변3
csh 매뉴얼 페이지에서:
로그인 쉘은 먼저 시스템 파일에서 명령을 실행합니다./etc/csh.cshrc그리고/etc/csh.login. 그런 다음 사용자의 홈 디렉터리에 있는 파일에서 명령을 실행합니다.~/.tcshrc(+) 또는 ~/.tcshrc를 찾을 수 없는 경우,~/.cshrc, 그 다음에~/.역사(또는 histfile 쉘 변수의 값), 그런 다음~/.로그인,마침내~/.cshdirs(또는 dirsfile 쉘 변수의 값) (+). 쉘은 /etc/csh.cshrc 이후 대신에 /etc/csh.login을 읽을 수 있으며, 이후 대신 ~/.tcshrc 이전에 ~/.login 또는 ~/.cshrc 및 ~/.history를 읽을 수 있습니다(그렇게 컴파일된 경우). ; 버전 쉘 변수를 참조하세요. (+)
따라서 이 줄을 찾을 수 있는 여러 파일이 있습니다.
답변4
tty
test tty: 를 사용할 수도 있습니다 tty -s && stty erase ^H
.
tty -s
반환 코드는 현재 연결이 tty인지 여부를 지정합니다.