Se, como eu, sempre tenta organizar e ter uma configuração modular, mais cedo ou mais tarde vai separar a configuração bash em vários ficheiros. Além disso, se quiser usar a mesma em várias máquinas, esta função dá jeito:

source_if_exists () {
    for i_; do test -f "$i_" && source "$i_"; done
}

Desta forma pode tentar incluir os fragmentos apenas onde e quando existem:

source_if_exists ${HOME}/etc/bash_completion

Algo que também é comum fazer é acrescentar um directório a uma variável de ambiente. Quando se faz uma configuração para várias máquina é sempre um inconveniente assegurar que os directórios existem. Estas funções tratam do problema:

safe_prepend_path() {
    VAR=$1
    shift
    VAL=$(eval echo \$${VAR})
    for i_; do
        test -d "$i_" && VAL=$i_${VAL:+":$VAL"}
    done
    eval export ${VAR}=$(echo ${VAL})
}

safe_append_path() {
    VAR=$1
    shift
    VAL=$(eval echo \$${VAR})
    for i_; do
        test -d "$i_" && VAL=${VAL:+"$VAL:"}$i_
    done
    eval export ${VAR}=$(echo ${VAL})
}

Exemplos:

safe_prepend_path PATH /opt/local/bin ${HOME}/bin
safe_append_path MANPATH /opt/local/man ${HOME}/man

É frequente que as variáveis de ambiente com directórios apresentem entradas duplicadas o que torna a pesquisa menos eficiente. Esta função assegura que cada directório ocorre apenas uma vez e retém apenas a primeira entrada, mantendo por isso a ordem.

unique_path() {
    eval export $1=$(echo $(eval echo \$${1}) | \
        awk -F:                   \
        '{ a[$1];                 \
           printf "%s",$1;        \
           for(i=2;i<=NF;i++) {   \
             if(!($i in a)) {     \
               printf ":%s",$i;   \
             };                   \
             a[$i];               \
           };                     \
           printf "\n";           \
         }'
)
}

Examples:

unique_path PATH
unique_path MANPATH

A Nokia realmente é perita em fazer decisões estranhas. Seria lógico pensar que ao gerir um serviço de email grátis para melhorar a proposta de valor no espaço da telefonia móvel, ao tomar a decisão de passar a sub-contratar esse serviço à Yahoo, que seriam feitas as diligências para garantir que os utilizadores actuais poderiam migrar sem problemas…


(Amazon)

Há cinco anos atrás, enquanto conversavamos sobre livros interessantes sobre desenvolvimento de software e afins, uma colega e amiga recomendou-me o livro ” The Soul of a New Machine”. Hoje calhou de folhear a minha cópia do livro e fiquei surpreendido com o quanto ainda lembrava dele.
Ainda para mais, hoje em dia trabalho para a empresa que acabou por adquirir a Data General…

keep looking »