if [ -e $IDIR ]; then
read -p "It appears that Packet Tracer is already installed. Do you wish to replace it? [Yn] " NEEDREPLACE
if [ "$NEEDREPLACE" = "y" ] || [ "$NEEDREPLACE" = "Y" ] || [ -z $NEEDREPLACE ]; then
sudo rm -rf $IDIR
else
echo "Program Terminated"; exit 0
fi
fi
Esse rm
soletra o problema ... se você instalar o software em / o seu sistema desaparecer, se você instalá-lo em / home / $ USER / you / home / $ USER / se foi. Razão? NÃO há verificação de sanidade aqui:
echo "You have accepted the terms to the EULA. Congratulations. Packet Tracer will now be installed."
read -p "Enter location to install Cisco Packet Tracer or press enter for default [/opt/pt]: " IDIR
if [ -z $IDIR ]; then
IDIR="/opt/pt"
fi
O IDIR deve sempre adicionar / pt à entrada se o usuário não o inserir. Eles fizeram isso para o padrão, eles não fizeram isso para a entrada do usuário. Muito muito ruim.
Agora a partir daqui todas as coisas acabam em uma confusão. O motivo pelo qual você vê sua casa sendo copiada é porque você não adicionou a parte / pt / na entrada e esses idiotas não a adicionaram.
if mkdir $IDIR > /dev/null 2>&1; then
if cp -r $SDIR/* $IDIR; then
echo Copied all files successfully to $IDIR
fi
Aqui eles copiam o SDIR para o IDIR. SDIR é definido como
DIR='dirname $_'
dirname : "irá recuperar o nome do caminho do diretório de um nome de caminho, ignorando qualquer barra à direita". Isso significa que o diretório atual e depois 1 para cima. Então eles assumem aqui que você inseriu / home / $ USER / pt / e então quer fazer uma cópia disso. Mais uma vez, eles se esqueceram de verificar se o que está acontecendo aqui é sensato: isso significa problema, já que vai para um diretório e o copia. Ruim.
Tudo deve estar OK se você escolher o padrão (/ opt / pt /). Lembre-se de que o FHS declara que softwares de terceiros devem ser instalados em / opt / e se você se ativer a isso, ele vai conforme o esperado. Mas o criador disso deve receber um aviso: este é um roteiro mal escrito.