2012-08-27 5 views

답변

2

나는 당신이 요구하는 것을 이해 확실하지 않다, 그러나 이것은 당신이 필요 아마이 지정된 명령을 실행 될 백그라운드에서 새로운 터미널 에뮬레이터를 시작하는 대신합니다

x-terminal-emulator -e "./application_name [arguments]" & 

껍질.

시스템에 x-terminal-emulator 별칭이없는 경우 xterm 또는 gnome-terminal과 같은 실제 터미널 에뮬레이터의 이름으로 대체하십시오. 모두 (거의) -e 옵션을 지원합니다.

물론 이것은 bash 스크립트가 처음부터 X11 세션 (cron 작업이나 그런 것이 아닌)에서 실행되어야합니다. 그렇지 않으면 새 터미널 에뮬레이터가 나타날 수있는 $DISPLAY이 없습니다.

EDIT : -e에 대한 인수가 쉘에서 실행되는지 또는 직접적으로 어떤 터미널 에뮬레이터가 사용되는지에 따라 결정되는 것으로 보입니다. 예를 들어 xterm은 쉘에서 실행하지만 gnome-terminal은 그렇지 않습니다. 이 결과는 cd foobar; ./something & wait과 같은 복합 쉘 명령을 -e의 인수로 제공 할 수도 있고 제공하지 못할 수도 있다는 것입니다. 해당 터미널 에뮬레이터의 해결 방법으로 쉘에서 명령을 실행하지 않으려면 -e 'sh -c "actual command"'을 사용할 수 있습니다. 특수 문자의 적절한 인용은 gets complicated이지만 두 단계의 인용이 있기 때문에 가능합니다.

+0

정확히 내가 원하는 것입니다.하지만 백그라운드에서 실행하고 싶지 않고 터미널을 열어두기를 원하면 어떻게해야합니까? – rajat

+0

그들은 백그라운드에서 실행됩니다 : 명령 줄의 끝에'&'를주의하십시오. (만약 그들이 백그라운드에서 뛰지 않는다면 다음 단계를 시작하기 전에 완료 될 때까지 기다릴 것입니다. 두 번째 질문에 대해서는 가장 간단한 방법은'; sleep 999999999'명령 (인용 부호 안에)의 끝에. 그것은 단지 원래의 명령이 끝난 후 영원히 걸리는 잠을 실행합니다. – Celada

+0

오크, 멋지다. 감사 ! – rajat