A resposta simples é que você tem um shell de root. É isso que está sendo usado aqui. Há uma boa comparação técnica entre su
, sudo -i
, sudo -s
e sudo su
métodos no Unix.SE mas isso não é relevante aqui. O código poderia ter usado algum e teria funcionado.
O nugget de ajuda significa algumas coisas:
-
Ele está procurando um comando na variável de ambiente
$SHELL
. Se você executarecho $SHELL
, provavelmente verá/bin/bash
. Isso significa que você obterá uma instância de raiz do Bash. Tenho certeza que se você estivesse emzsh
, isso significaria que você obtém uma instância de raiz dezsh
. -
Se
$SHELL
estiver vazio, ele retornará ao shell padrão definido em/etc/passwd
para esse usuário. -
Se você fornecer um comando (por exemplo,
sudo -s whoami
), ele será executado:sudo /bin/bash -c "whoami"
-
Se você não passar um comando, ele não passa um argumento
-c
para que você tenha um shell interativo.
Eu usei a frase "root" várias vezes. Por padrão sudo
é tudo sobre a execução de coisas como root, mas sudo
(e su) pode executar coisas como outros usuários (se você tiver permissão para fazer isso). Eu estou apenas afirmando isso para os pedantes que irão gritar que sudo -s -u $USER
não dá a eles um shell de root como eu prometi que -s
iria acima.
E no meu humblest de opiniões, é realmente ridículo transformar o root em apenas dois comandos, sem mencionar que ele pode deixar um usuário executando acidentalmente comandos adicionais como root. Se você quer ou precisa executar algo como root, basta premendar o comando com sudo
:
sudo apt-get update
sudo apt-get install -y build-essential libtool libcurl4-openssl-dev libncurses5-dev libudev-dev autoconf automake screen
Eu duvido de qualquer tutorial que sugira obter um shell de root, exceto nos casos em que você tem centenas de comandos para executar ... E, mesmo assim, há scripts.