2012-03-28 3 views
1

저는 Solaris 전문가가 아니며 PWD 및 ksh를 bash로 변경하는 프롬프트를 변경하는 쉘 스크립트를 작성하려고합니다.

PS1 = '$ PWD $'간부 떠들썩한 파티 --noprofile --rcfile/디바이스/널

또는

PS1 = '\ w $'간부 떠들썩한 파티 --noprofile --rcfile/디바이스/널

둘 다 sh에서 작동하지 않습니다. 명령 줄에서 명령을 추가하면 내 bash가 프롬프트에 나타나고 두 번째로 PS1 = '$ PWD $'이 시작되고 프롬프트가 변경됩니다.

첫째, PS1 = '$ PWD $'이 (가) 쉘 스크립트에서 작동하지 않는 이유는 무엇입니까? 왜 명령을 두 번 실행해야 내 결과를 얻을 수 있습니까?

내 수출/home/syed/디렉토리에는 local.profile 및 local.cshrc라는 세 개의 파일이 있습니다. 내가 그들을 사용할 수있는 방법은 언제나 내가 로그인 할 때 나는 내 쉘 스크립트를 실행할 필요가 없으며 로그인시 bash 쉘과 프롬프트를 얻는다. 내가 원할 때 (나는 너무 많이 묻는다. 나는 ksh를 좋아하지 않는다. 그것은 어떤 기능을 화살표 리콜에게 마지막 명령 및 탭 자동 완성 기능)

감사 에드 ...

답변

1

스크립트 내에서 exec을 사용하면 스크립트는 부모 쉘이 아닌 바뀝니다.

스크립트를 실행하지 말고 소싱을 시도하십시오.

또한 Solaris에서는 passwd -e을 사용하여 로그인 쉘을 변경할 수 있습니다.

~/.profile을 기존 ~/local.profile (또는 이와 유사한 기호)으로 심볼릭 링크 할 수 있습니다. .cshrc은 C 쉘용이며 ksh 또는 Bash와 호환되지 않습니다.

1

당신이 당신의 기본 쉘은 bash는 일이 변경됩니다 것을 원하는 경우에/etc/passwd에를 좋아하지 않습니다

0

exec bash는 처음부터 자체 환경을 설정합니다. 상속 할 설정이 포함 된 --rcfile을 전달하십시오.

관련 문제