evita que “[1] + done $ scriptname” e “[1] 31303” sejam exibidos

1

Eu configurei um alias para meu mutt: alias mutt='$HOME/.mutt/run-notmuch-offlineimap & ; mutt' .

Observação : alterar meu alias para alias mutt='$HOME/.mutt/run-notmuch-offlineimap 2> /dev/null & ; mutt' ou para alias mutt='$HOME/.mutt/run-notmuch-offlineimap 2>&1 >/dev/null & ; mutt' produz o mesmo resultado exato.

O script run-notmuch-offlineimap parece com isso:

#!/usr/bin/env zsh

notmuch="$(which notmuch)"

$notmuch new --quiet

$notmuch tag +inbox -- "folder:dev/dev|INBOX or folder:pers/pers|INBOX"
$notmuch tag +sent -- "folder:dev/dev|Sent or folder:pers/pers|Sent"
$notmuch tag +drafts -- "folder:dev/dev|Drafts or folder:pers/pers|Sent"
$notmuch tag +github -- "folder:dev/dev|github and not tag:github"


# test if the offlineimap instance of account dev is already running
if [[ $(pgrep -f 'offlineimap.*dev.*') == "" ]]
then
    offlineimap -c "$HOME/.fetch-send-mail/dev/dev.imap" -u quiet
fi


# test if the offlineimap instance of account dev is already running
if [[ $(pgrep -f 'offlineimap.*pers.*') == "" ]]
then
    offlineimap -c "$HOME/.fetch-send-mail/pers/pers.imap" -u quiet
fi

(o resultado seria exatamente o mesmo se eu tivesse usado o bash nesse script)

Quando começo o mutt, é isso que acontece:

~ 
$ mutt
[1] 31303
Mailbox is unchanged.
# some seconds afterwards:
~ 
$
[1]  + done       $HOME/.mutt/run-notmuch-offlineimap
~ 

A mensagem "Mailbox is unchanged" é do próprio mutt, o que é esperado. No entanto, posso evitar que as mensagens [1] sejam exibidas? Por exemplo. quando eu executo o mutt, ele deve imprimir isso (e nada mais):

~ 
$ mutt
Mailbox is unchanged.
~ 
$

como posso conseguir isso?

    
por toogley 16.10.2016 / 11:10

1 resposta

3

Se você estiver em zsh, poderá alterar o alias para iniciar o processo em segundo plano com &! , em vez de apenas & . Isso irá imediatamente negar o processo.

alias mutt='$HOME/.mutt/run-notmuch-offlineimap &! mutt'

Se você está no bash, então você pode usar disown após o comando para ter um efeito similar, mas você ainda receberá a primeira mensagem de controle de trabalho listando o pid.

alias mutt='$HOME/.mutt/run-notmuch-offlineimap & disown; mutt'

Você pode evitar ambos usando um sub-shell:

alias mutt='($HOME/.mutt/run-notmuch-offlineimap &); mutt'
    
por 16.10.2016 / 16:06