Bash 스크립트 수정 - 임시 파일을 통해 프롬프트 색상 변경 호출

Bash 스크립트 수정 - 임시 파일을 통해 프롬프트 색상 변경 호출

다음 스크립트가 작동하지 않는 이유가 궁금합니다.

#!/bin/bash
read -p 'First lets write PROMPT.SH'
echo '#!/bin/bash'>prompt.sh
echo "export PS1='\e[1;31m\]\u@\h \W\$\e[0m\] '">>prompt.sh
read -p "Change Title and Prompt"
source prompt.sh
echo texttexttext
read -p "Now lets tidy up PROMPT.SH"
rm ./prompt.sh
read -p "That was the program"

제가 하려는 작업은 평소에 할 수 있는 창 제목, 프롬프트, 텍스트 색상을 변경하는 것입니다.

PS1='\e[1;31m\]\u@\h \W\$\e[0m\] '

일반 bash 세션 중에는 스크립트에 추가한 다음 스크립트를 실행할 때는 그렇지 않습니다.

답변1

PS1대화형 프롬프트에만 표시됩니다. 에 대해 표시된 프롬프트와는 아무 관련이 없습니다 read -p. 입력을 읽는 경우에도 bash 스크립트 실행은 고려되지 않습니다.인터렉티브.

답변2

무엇을 하려는지 명확하지 않지만 PS1스크립트에서 대화형 셸을 설정하는 것 같습니다. 그렇게 말하면, 당신은 그것을 할 수 없습니다. *nix 및 Unix 계열 시스템에서는 프로세스 특성/속성이 상위에서 하위로 전달되지만 그 반대 방향으로는 전달되지 않습니다. 예를 들어 를 PATH포함하도록 설정한 /foo다음 실행을 시도하는 스크립트를 실행하면 bar검색되지만 스크립트를 /foo/bar변경하면 PATH대화형 셸에 영향을 주지 않습니다. 마찬가지로 cdumask. 이는 Windows 명령 프롬프트(배치) 환경과의 차이점입니다.

즉, 답이 있고 여러분은 이미 답을 알고 있습니다. 스크립트(10줄 스크립트)가 호출되면 를 andy.sh입력하여 원하는 효과를 얻을 수 있습니다 source andy.sh. 그러나 그것은 어리석은 과잉입니다(단지 스크립트 작성 연습을 위해 수행하지 않는 한). 그냥 넣어

PS1='\e[1;31m\]\u@\h \W\$\e[0m\] '

에 입력 drew.sh하고 source drew.sh.

그러나 alias명령도 연구하십시오.

관련 정보