Existem algumas maneiras de fazer isso.
Usando um script
Uma solução rápida e suja seria escrever um script chamado apt-get
ou aptitude
e fazer com que ele chame o programa como tal:
#!/bin/bash
# filename: apt-get
# '$@' is all of the arguments passed to the script
/usr/bin/apt-get-bin "$@"
# or /usr/bin/aptitude-bin "$@"
if [[ $1 == *upgrade* ]] ; then
checkrestart
fi
Torne o script executável: chmod +x apt-get
. Você também pode querer tornar o script de propriedade de root: chown root apt-get; chgrp root apt-get
. Tenha cuidado para não definir o bit setuid em seu script, porque se um invasor obtiver privilégios de gravação, ele poderá modificá-lo de maneira rápida e fácil para fornecer um shell raiz.
Esse método, é claro, exigirá que você mova o binário real para outro local e mova seu script de shell para algum local em seu caminho. O local adequado para colocar scripts de usuário é /usr/local/bin
. Nesta situação, você deve colocar seu script no local em que o binário estava antes de movê-lo para manter as coisas organizadas.
Substituir o binário por um script dessa maneira é bastante invasivo e afeta todos os usuários da máquina. Como alternativa, você poderia chamar seu script de algo como apt-get-cr
e lembre-se de chamar esse script em vez de apt-get
. Você também pode escrever uma função de shell.
Usando uma função shell
Usar uma função shell permite manter o nome do comando apt-get
sem ter que mover binários.
apt-get() {
# 'command' makes sure this function doesn't call itself.
# You could also use a direct path the binary as shown above.
command apt-get "$@"
if [[ $1 == *upgrade* ]] ; then
checkrestart
fi
}
Coloque esta função em algum lugar na sua configuração de shell ( ~/.bashrc
, ~/.zshrc
, etc.)
Este método é geralmente muito menos intrusivo que o método de script. Além disso, não é necessário mover os binários, o que geralmente é algo que apenas o usuário root pode fazer.
No lado negativo, o método da função shell nem sempre é muito portável entre shells e não se integra bem a interfaces gráficas como barras de inicialização na maneira como o script faz (você quase sempre pode tratar um script como um binário executável.)