#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' ]