zsh와 비슷한 것을 시작하고 싶습니다.
zsh -c 'my_prog option1 option2'
그러나 해당 명령을 실행 한 후 종료하는 대신 호출 된 zsh의 propt (나를 호출하지 않는 곳)에 남겨 두십시오. 이에 대한 하나의 특정 사용 사례는 screenrc 파일에 있으며 다음과 같이 할 수 있습니다.
screen -t my_prog 0 zsh -c 'my_prog opt1 opt2'
그리고 그 명령을 실행 한 후에는 닫히지 않고 쉘이 남습니다.
답변
나는 이것을하는 것이 좋습니다.
(sirius)~: zsh -c 'print hello; zsh -i'
hello
(sirius)~: echo $SHLVL
2
화면과 $STY
변수를 사용하여 재생할 수있는 다른 트릭이 있습니다 .
개별 화면이있는 zsh에서 무언가를 실행하려면 .zshrc 또는 .zlogin 내에서 $ STY 변수를 확인할 수 있습니다. 형식 <PID>.<TTY>.<HOSTNAME>
입니다.
if [[ -n $STY ]] then
if [[ -f ~/.zsh-$STY[(ws:.:)2] ]] then
. ~/.zsh-$STY[(ws:.:)2]
fi
fi
화면에 있고 ~/.zsh-<TTY>
($ STY 변수에서) 존재하는 경우 소스를 지정한 다음 계속 진행하십시오. 대화식 쉘을 호출하기 전에 환경 변수를 설정할 수도 있습니다.
> FOO=bar zsh -i
> env | grep FOO
FOO=bar
> RUNTHISCOMMAND=/path/to/script zsh -i
.zshrc:
if [[ -n $RUNTHISCOMMAND ]] then
$RUNTHISCOMMAND
fi
해당 검사를 .zshrc / .zlogin에 추가하십시오.
답변
추가 쉘없이 작동하는 솔루션을 찾았 습니다 . 더하다:
if [[ $1 == eval ]]
then
"$@"
set --
fi
.zshrc에 연결 한 다음
zsh -is eval 'your shell command here'
한 번에 많은 쉘을 시작하는 데 정말 좋습니다.
답변
; exec zsh
명령 에 추가 하는 것은 어떻습니까? 그렇게하면 끝에 하나의 껍질 만 남게됩니다.
답변
나는 eval "$RUN"
나의 끝에있다 .zshrc
. 이제 추가 쉘없이 명령을 실행할 수 있습니다.
RUN='my_prog opt1 opt2' zsh