答案1
您似乎已經編輯了 .bashrc 檔案。
如果我輸入,我可以準確地複製這個錯誤
'‘export'
作為我的 .bashrc 中的最後一行
要檢查它只需執行
grep export ~/.bashrc
如果grep
給出類似上面的輸出,則將其從 ~/.bashrc 檔案中編輯出來。
編輯:從您上次的帖子編輯中,您可以看到有 2 行以 'export 開頭,並將它們從 ~/.bashrc 中刪除。
答案2
假設您已按原樣複製貼上該命令,它會抱怨在U+2018‘export
處找不到該命令‘
左單引號'
非 ASCII 字元(不要與 ASCII撇號/單引號 (U+0027) 或 ASCII`
反引號/重音符號 (U+0060) 字元混淆)。
由於該字元在任何方面都不特殊bash
,因此命令列如下:
‘export foo=bar’
(其中’
U+2019,右邊的單引號)
被解釋為運行‘export
帶有參數的命令foo=bar’
。你是否寫過:
'export foo=bar'
相反,U+2018 和 U+2019 被替換為 ASCII 撇號,這是一個特殊的字符,bash
因為它是引用運算符,將被視為運行export foo=bar
不帶參數的命令。沒有這樣的命令。那也不是你想要的。
你要
export foo=bar
或者
'export' 'foo=bar'
即運行export
帶foo=bar
參數的命令。
在這裡,您需要刪除該 U+2018 字元(如果有的話,可能還會刪除相應的 U+2019 字元),無論您在~/.bashrc
何處插入該字元。無論您從何處複製貼上該代碼,這些字元都不會被複製。
要查找該虛假命令的引入位置(如果不在其中) ~/.bashrc
(儘管您的最新編輯顯示它~/.bashrc
確實在您的程式碼中),您可以嘗試運行:
env SHELLOPTS=xtrace \
BASH_XTRACEFD=7 \
PS4='[${BASH_SOURCE:-$BASH_EXECUTION_STRING}:$LINENO]> ' \
7> >(grep ‘) bash -l
(但是,與 bash-4.4 或更高版本$PS4
一樣運行的 shell 會忽略這些root
,這似乎是您的情況,這就是為什麼您看到的++
不是檔案名稱和行號)。