Observação

Observação
#Get client IP base on current logged in user
if [ $USER == 'root' ]
then
    ip="$(last | awk 'NR==1 {print $3}')"
else
    ip="$(echo $SSH_CONNECTION | cut -d " " -f 1)"
fi

/root/.bashrc:157: = não encontrado

Linha 157

insira a descrição da imagem aqui


Observação

Eu anexei esta linha source ~/.bashrcao meu .zshrcto

vi .zshrc
source ~/.bashrc  # import all my quick aliases and fns

Responder1

Em zsh,=cmdé um operador de expansão de nome de arquivo que se expande para o caminho do cmdcomando. =cmdé similar a $commands[cmd].

Então aqui, com ==um dos argumentos do [comando, isso o expande para o caminho do =comando. Como não há nenhum comando chamado =no seu arquivo $PATH, isso causa um erro.

Comparar:

$ echo =ls
/bin/ls
$ echo =junk
zsh: junk not found

O operador de igualdade no [comando é =. O [comando apenas faz testes, não faz nenhuma atribuição, portanto não há necessidade de diferenciar entre um operador de atribuição e um operador de comparação de igualdade como existe em algumas outras linguagens (com =vs ==como em C ou :=vs =em algumas outras, etc) .

Então deveria ser apenas:

[ "$USER" = root ]

Ainda assim, o [of zsh, assim como o of kshtambém suporta ==como alternativa ao =, mas a menos que você desabilite a equalsopção (como na kshemulação), você precisará citar pelo menos o primeiro =para evitar esse =cmdoperador:

[ "$USER" '==' root ]

Observe que while $USERNAMEé definido automaticamente por zsh, $USERnão é (embora seja definido como uma variável de ambiente por algumas coisas como login).

Para testar se você tem privilégios de superusuário, é mais robusto verificar se seu ID de usuário efetivo é 0, o que pode ser feito em zshou bashcom [ "$EUID" -eq 0 ]ou (( EUID == 0 )).

Veja também:

Responder2

Esta linha não é realmente sintaticamente correta (mas bashlida com isso):

if [ $USER == 'root' ]

Você deve usar ==apenas com [[... ]]e =caso contrário. Eu também recomendo que você coloque aspas duplas $USERse estiver com [... ]sintaxe

if [[ "$USER" == 'root' ]]

ou

if [ "$USER" = 'root' ]

informação relacionada