bash 서브 쉘을 실행하고 싶고 (1) 몇 가지 명령을 실행 한 다음 (2) 원하는대로 서브 쉘에 남아 있습니다. 나는 이들 각각을 개별적으로 할 수 있습니다.
-c
플래그를 사용하여 명령을 실행하십시오 .$> bash -c "ls; pwd; <other commands...>"
그러나 명령이 실행 된 후 즉시 "super"쉘로 돌아갑니다. 대화 형 서브 쉘을 실행할 수도 있습니다.
새
bash
프로세스를 시작하십시오 .$> bash
명시 적으로 말할 때까지 서브 쉘을 종료하지 않지만 초기 명령을 실행할 수는 없습니다. 내가 찾은 가장 가까운 솔루션은 다음과 같습니다.
$> bash -c "ls; pwd; <other commands>; exec bash"
하나의 서브 쉘에서 주어진 명령을 실행 한 다음 상호 작용을 위해 별도의 명령을 열어서 작동하지만 원하는 방식은 아닙니다.
한 줄로하고 싶습니다. 일단 서브 쉘을 빠져 나가면 사고없이 일반 "슈퍼"쉘로 되돌아 가야합니다. 방법이 있어야합니다 ~~
NB : 내가 묻지 않은 것은 ...
- bash 맨 페이지를 어디서 얻을 수 있는지 묻지 않습니다.
- 파일에서 초기화 명령을 읽는 방법을 묻지 않습니다 ...이 작업을 수행하는 방법을 알고 있습니다. 원하는 솔루션이 아닙니다.
- tmux 또는 gnu 화면 사용에 관심이 없음
- 이에 대한 맥락에 관심이 없습니다. 즉, 질문은 일반적인 것으로 의도되며 특정 목적을위한 것이 아닙니다.
- 가능한 경우 원하는 것을 달성하지만 "더러운"방식으로 해결 방법을 사용하고 싶지 않습니다. 그냥 한 줄로하고 싶습니다. 특히 저는 다음과 같은 일을하고 싶지 않습니다
xterm -e 'ls'
exec bash
솔루션에는 두 개의 개별 서브 쉘이 포함됩니다. 하나의 연속 서브 쉘을 원합니다.
exec
장점 은 첫 번째 서브 쉘을 두 번째 서브 쉘로 대체 하므로 부모 아래에 1 개의 쉘만 남게 된다는 것 입니다. 초기화 명령이 환경 변수를 설정하면 실행 된 쉘에 존재합니다.
exec
당신이 그런 비 수출 변수, 함수, 별칭, ...로, 환경을 통해 서브 쉘로 아래로 통과 아니에요 아무것도 잃을 것입니다
exec bash
솔루션이 적합하지 않습니까?