Примечание

Примечание
#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: = не найдено

Строка 157

введите описание изображения здесь


Примечание

Я добавил эту строку source ~/.bashrcк .zshrcсвоему

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

решение1

В zsh,=cmd— оператор расширения имени файла, который расширяется до пути к cmdкоманде. =cmdпохож на $commands[cmd].

Так вот, с ==одним из аргументов команды [, который расширяет его до пути команды . Поскольку в вашем =нет вызываемой команды , это вызывает ошибку.=$PATH

Сравнивать:

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

Оператор равенства в [команде — =. [Команда выполняет только проверки, она не выполняет никаких присваиваний, поэтому нет необходимости различать оператор присваивания и оператор сравнения на равенство, как это делается в некоторых других языках (с =vs ==, как в C, или :=vs =в некоторых других и т. д.).

Поэтому должно быть просто:

[ "$USER" = root ]

Тем не менее , [of zsh, как и of , kshтакже поддерживает ==в качестве альтернативы =, но если вы не отключите эту equalsопцию (как в kshэмуляции), вам придется заключить в кавычки по крайней мере первую часть, =чтобы избежать этого =cmdоператора:

[ "$USER" '==' root ]

Обратите внимание, что while $USERNAMEавтоматически устанавливается zsh, $USERа не , хотя некоторыми вещами, например , он устанавливается как переменная окружения login.

Чтобы проверить, есть ли у вас привилегии суперпользователя, более надежно проверить, что ваш эффективный идентификатор пользователя равен 0, что можно сделать в zshили bashс помощью [ "$EUID" -eq 0 ]или (( EUID == 0 )).

Смотрите также:

решение2

Эта строка не совсем синтаксически правильна (но bashсправляется):

if [ $USER == 'root' ]

Вы должны использовать ==только с [[... ]], и =в противном случае. Я бы также рекомендовал вам использовать двойные кавычки, $USERесли вы придерживаетесь синтаксиса [...]

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

или

if [ "$USER" = 'root' ]

Связанный контент