Quando você escreve:
alias thm="cd $SET_DIR/sites/all/themes/"
você está expandindo o valor de SET_DIR
no momento em que define o alias. Isso significa que você obtém o mesmo valor sempre que executar o alias, mesmo que tenha alterado o valor da variável entre elas. Se você voltar a usar a barra invertida para $
, a variável será desreferenciada quando você usar o alias:
$ foo=hello
$ alias test="echo \$foo"
$ test
hello
$ foo=world
$ test
world
Portanto, se você definir os aliases dessa forma, não precisará redefini-los quando alterar SET_DIR
. Você também pode citar a definição do alias.
Para o seu arquivo de dados, o Bash 4 suporta os arrays associativos , que permitem que você defina seus dados assim:
declare -A theme site # This makes these variables associative arrays
add_site() {
local shortcut=$1
theme[$shortcut]=$2
site[$shortcut]=$3
}
add_site x1 example1.com alpha
add_site x2 example2.com beta
Você pode acessar os valores com, por exemplo, %código%. Seus aliases podem assumir o formato:
alias thm="cd /var/www/\${site[\$CURRENT]}/sites/all/themes/\${themes[\$CURRENT]}"
Sua função ${theme[x1]}
iria então definir sroot
para a chave que você queria. O alias sempre levaria você ao diretório correto no site atual.
Existem outras abordagens para definir as matrizes em particular, mas isso lhe dará uma ideia geral.