사용자 대화 형 셸을 시작하는 실행 파일이 있습니다. 셸을 시작할 때 몇 가지 명령을 먼저 주입 한 다음 사용자가 대화식 세션을 갖기를 원합니다. 나는 이것을 사용하여 쉽게 할 수있다 echo
:
echo "command 1\ncommand 2\ncommand3" | ./shell_executable
이것은 거의 작동합니다. 문제는 프로세스의 stdin을 공급하는 echo 명령이 명령을 반향하면 EOF에 도달한다는 것입니다. 이 EOF는 쉘에서 Ctrl + D를 누른 것처럼 쉘을 즉시 종료시킵니다.
나중에 EOF를 발생시키지 않고 이러한 명령을 stdin에 주입하는 방법이 있습니까?
답변
stackoverflow 에서 비슷한 질문 에서이 영리한 답변을 찾았습니다.
(echo -e "cmd 1\ncmd 2" && cat) | ./shell_executable
이것은 트릭을 수행합니다. shell_ executable의 입력 스트림으로 cat
출력을 펌핑하고 echo
EOF까지 더 많은 입력을 기다립니다.
답변
이 작업을 수행하는 가장 깨끗한 방법은 bash
의 --rcfile
옵션 과 같은 것을 찾는 것입니다 . 사용자 정의 명령을 사용자 정의 파일에 넣고 대화식 쉘로 전달하여 시작시 실행하십시오.
이러한 옵션이 없으면 다음을 시도해보십시오.
cat custom_commands_file - | ./shell_executable
cat
-
stdin으로 해석 됩니다.