Estoy intentando crear un alias simple:
alias draw="pinta &> /dev/null & disown"
La intención aquí es bastante obvia. Mi problema es que cada vez que paso un argumento, obtengo
bash: disown: file.jpg: no such job
y pinta se abre sin el archivo cargado. ¿Cómo le paso mi argumento a pinta y luego reniego de la tarea?
EDITAR:
Intenté pasar explícitamente los argumentos de la siguiente manera:
alias draw="pinta $* &> /dev/null & disown"
pero obtengo el mismo resultado
Respuesta1
Utilice una función en su lugar:
function draw {
pinta "$@" &> /dev/null & disown
}
Prima:Deberías usar "$@"
en lugar de $*
.
Suponga que tiene:
function foo {
echo "1: $1"
echo "2: $2"
echo "3: $3"
}
function bar {
echo '$*'; foo $*
echo '$@'; foo $@
echo '"$*"'; foo "$*"
echo '"$@"'; foo "$@"
}
Entonces intenta:
bar "f o o" bar baz
Sólo "$@"
contigo se obtiene el comportamiento adecuado.