2012-05-03 2 views
8

내 .bashrc에있는 스크립트를 호출하여 터미널을 열 때 호출하는 새 메시지의 수를 인쇄합니다. 네트워크에 연결하고 때로는 완료 될 때까지 터미널을 사용할 수 없다는 것을 의미하는 몇 초가 걸립니다.bash "&"print "[1] + Done"없이

내가 넣어하지만 경우 : 내 bashrc에의

mailcheck & 

, 그것은 잘 작동합니다. 그런 다음 빈 줄을 인쇄하고 Enter 키를 눌러 인쇄하면

[1]+ Done     ~/bin/mailcheck 

이것은 매우 지저분합니다. 몇 분 동안 그것에 대해 생각

mailcheck & 2>/dev/null 

널 (null)는/dev에

+0

어떤 점에 유익한 질문입니다! +1 –

답변

9

, 그것은 배쉬의 작업 제어 텔링에서의 :

(exec mailcheck &) 
+0

'mailcheck & disown'이 아닌 이유는 무엇입니까? –

2

시도 배관 표준 에러는/또 다른 방법은 쓰기를 사용할 수 있습니다.
백그라운드 작업의 출력을 사용자 자신에게 파이프하십시오. 그러면 언제든지 완료 할 수 있으며 stderr 및 stderr의 추가 출력을 모두 저장할 수 있습니다.

mailcheck | write $(whoami) & > /dev/null 
+0

죄송합니다. 나는 그것을 시도했지만 stderr가 아닌 것 같습니다. –

+0

오류가 아니기 때문에 stderr해서는 안됩니다. 백그라운드에서 실행되고 있기 때문에 프로세스가 성공적으로 완료되었음을 알리는 것입니다. 아마 stdout? –

+0

그게 좋지도 않아, 이해가 안돼, 그렇지 않으면 stdout 또는 stderr 뭐야? –

3

이 같은 스크립트를 호출 할 수 있습니다 : 그 메시지가 MAILCHECK에서 오는되지

(mailcheck &) 
+0

여전히 좋은 결과가 나옵니다. [1] + 완료 exec ~/bin/mailcheck –

+0

테스트 중에는 정상적으로 작동합니다. .bashrc에 스크립트 호출을 포함 시키면 다음에 로그인 할 때 '완료'메시지가 표시되지 않습니다. – anubhava

+0

예. 죄송합니다. 정확한 내용은 대괄호가 없습니다. –

4

이 작동하는 것 같다 당신은 당신의 배경 직업에 대해. 이를 피하는 방법은 bash에게 작업 제어에 의해 관리되는 것을 원하지 않는다고 말하는 것입니다.

mailcheck & 
disown $! 
+0

리디렉션없이 작동하는 것 같습니다. –

+0

@Dennis : 잘 알아 보았습니다. 리디렉션을 제거하겠습니다. –