Pressionar a guia após o arquivo de script de origem imprime uma saída relacionada ao script

1

Eu tenho um arquivo de script em um diretório. Seu conteúdo é o seguinte:

#!/bin/bash                                                                                                                                                                                       

function set {

    cur='pwd'

    alias m="cd $cur/app/models"
    alias v="cd $cur/app/views"
    alias t="cd $cur/app/views/templates"
    alias c="cd $cur/app/controllers"
    alias cl="cd $cur/app/classes"

    alias con="cd $cur/config"
    alias p="cd $cur/public"
}

function unset {
    unalias m v t c cl con p
}

if [ $1 = 's' ]; then
    set 
elif [ $1 = 'u' ]; then
    unset
fi

Quando ainda não forneço esse arquivo, não há problema. No entanto, uma vez que eu forneço esse arquivo usando o comando . script.sh , sempre que eu digitar um comando como cd ou vim e, em seguida, digitar algo e pressionar o botão tab , é o seguinte:

cd abash: unalias: m: not found
bash: unalias: v: not found
bash: unalias: t: not found
bash: unalias: c: not found
bash: unalias: cl: not found
bash: unalias: con: not found
bash: unalias: p: not found
bash: _upvars: -v: missing argument(s)
bash: unalias: m: not found
bash: unalias: v: not found
bash: unalias: t: not found
bash: unalias: c: not found
bash: unalias: cl: not found
bash: unalias: con: not found
bash: unalias: p: not found
bash: _upvars: -v: missing argument(s)

Alguma ideia do que acontece e como pará-lo?

    
por kevin 11.02.2014 / 16:25

1 resposta

2

Você está definindo funções chamadas set e unset . Esta é uma idéia muito ruim, porque o seu módulo de complicação parece chamar set ou unset (que são parte do POSIX), esperando usar os builtins do shell, mas acaba recebendo sua função.

Nomeie suas funções como algo diferente de set e unset (se você realmente precisar nomeá-las, preencha um sublinhado).

Como um aparte, não há razão para criar funções como function foo { ... } . Apenas use foo() { ... } - é parte do POSIX, enquanto o formulário que você está usando não é.

    
por 11.02.2014 / 16:29