Minha resposta é strongmente baseada neste post: link
Um alias não funciona assim, os argumentos são sempre passados para o final do comando. Usando seu alias como exemplo, gedit filename
executará o seguinte:
gedit $@ > /dev/null 2>&1 & filename
em vez de
gedit filename > /dev/null 2>&1 &
O que está causando o bash a pensar que você está inserindo um segundo comando chamado filename
.
O que você precisa fazer é criar uma função no arquivo ~/.bashrc
, que executará o comando gedit:
O seguinte snippet é uma versão ligeiramente modificada do código do drmrgd
function gedit-bg() {
if [ ! -n "$1" ]; then
echo "USAGE: gedit-bg <filename>";
else
( gedit "$1" > /dev/null 2>&1 & );
fi
}
Você precisará registrar novamente para que a alteração entre em vigor. Assim, você poderá usar o método da seguinte forma:
gedit-bg filename