Bash
/root/.bashrc:157: = 未找到
#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
In
zsh
,=cmd
是一個文件名擴展運算符,用於擴展cmd
命令的路徑。=cmd
類似於$commands[cmd]
。因此,在這裡,使用命令
==
的參數之一[
,將其擴展為命令的路徑=
。=
由於您的 中沒有呼叫命令$PATH
,因此會導致錯誤。相比:
$ echo =ls /bin/ls $ echo =junk zsh: junk not found
[
命令中的相等運算符是=
. 該[
命令僅進行測試,不進行任何賦值,因此無需像其他一些語言中那樣區分賦值運算符和相等比較運算符(在 C 中使用 vs 或在其他一些語言中使用=
vs等) .==``:=``=
所以它應該是:
[ "$USER" = root ]
仍然是
[
ofzsh
,就像 ofksh
也支持==
作為 的替代品=
,但是除非您禁用該equals
選項(就像它在ksh
仿真中一樣),否則您至少需要引用第一個=
以避免該=cmd
運算符:[ "$USER" '==' root ]
請注意,while
$USERNAME
是由 自動設置的zsh
,$USER
而不是(儘管它被某些東西設置為環境變數,例如login
)。要測試您是否具有超級使用者權限,檢查您的有效使用者 id 是否為 0 會更可靠,這可以在
zsh
或bash
中完成[ "$EUID" -eq 0 ]
or(( EUID == 0 ))
。也可以看看: