Você está no caminho certo! Um casal comenta sobre isso. Geralmente, é uma prática melhor deixar ações de várias linhas como essa para as funções. Eu provavelmente escreveria assim:
change_etc_hosts_file() {
set -e # stop running if we encounter an error
sudo \mv -f /etc/hosts /etc/hoststempname
sudo \mv -f /etc/hostssecondary /etc/hosts
sudo \mv -f /etc/hoststempname /etc/hostssecondary
set +e
}
alias changehosts=change_etc_hosts_file
Você notará que também usei caminhos absolutos em vez de alterar o diretório. Esta é geralmente uma idéia melhor (para usar caminhos absolutos). Se você quiser continuar usando parentes, então é melhor fazer isso em um sub-shell para que você não precise manipular o diretório de mudança de volta para $ PWD (que, se você abortar, deixará você em um estado estranho). Para fazer isso como um sub-shell, ficaria assim:
change_etc_hosts_file() {
( # use subshell
cd /etc
set -e # stop running if we encounter an error
sudo \rm -f hoststempname # the \ escapes aliases which might cause prompting
sudo \cp -f hosts hoststempname
sudo \cp -f hostssecondary hosts
sudo \cp -f hoststempname hostssecondary
)
}
O cd acontece dentro do (), que é um novo processo, portanto, não afetará seu diretório de trabalho atual.