
我嘗試過以下方法:
export PATH=>>-
$HOME/.cargo/bin:
$HOME/.bkaradzic/bx/tools/bin/linux:
$HOME/.bkaradzic/bimg/tools/bin/linux:
$HOME/.dotnet:
$HOME/.android-ndk-r17b:
$PATH
export PATH=${PATH//$'\r'/}
export PATH=${PATH//$'\n'/}
export PATH=${PATH//$'\x20'/}
還是
-bash: /home/hydroper/.cargo/bin:: No such file or directory
-bash: /home/hydroper/.bkaradzic/bx/tools/bin/linux:: No such file or directory
-bash: /home/hydroper/.bkaradzic/bimg/tools/bin/linux:: No such file or directory
-bash: /home/hydroper/.dotnet:: No such file or directory
-bash: /home/hydroper/.android-ndk-r17b:: No such file or directory
有什麼建議麼?
答案1
您似乎認為第一行將開始對路徑進行擴展。這不是真的。第一行是一個完整的命令。
export PATH= >> -
上面的行為了更好地理解而寫了一些空格,將設置PATH
為空字串,並將命令的輸出附加到文件中-
。
以下行是下一個命令
$HOME/.cargo/bin:
它擴展為系統上可能存在的目錄名稱,加上冒號。結果是
-bash: /home/hydroper/.cargo/bin:
: 沒有這樣的檔案或目錄
答案2
聽起來你想要類似的東西:
export PATH="$(paste -sd : - << EOF
$HOME/.cargo/bin
$HOME/.bkaradzic/bx/tools/bin/linux
$HOME/.bkaradzic/bimg/tools/bin/linux
$HOME/.dotnet
$HOME/.android-ndk-r17b
$PATH
EOF
)"
paste -s
是連接文件所有行的命令(使用-d
;提供的分隔符號-
表示為標準輸入而不是實際文件執行此操作,-
在某些實作中可以省略,但這不是標準/可移植的)。
ksh93
要回答有關刪除/mksh
或bash
中的空格的問題zsh
:
PATH=${PATH//[[:space:]]}
將刪除所有空格字符,包括 ASCII 字符,包括換行符。匹配字元清單取決於區域設定和系統(例如,並非所有系統都包含不間斷空格),但始終包含所有 ASCII 字元(TAB、LF、VT、FF、CR、SPC)。
$PATH
要先輸入換行符,您需要:
export PATH="
$HOME/.cargo/bin:
$HOME/.bkaradzic/bx/tools/bin/linux:
$HOME/.bkaradzic/bimg/tools/bin/linux:
$HOME/.dotnet:
$HOME/.android-ndk-r17b:
$PATH"
>>
是一個輸出重定向運算符,您可能會與 the<<
或<<-
here-doc 運算符混淆。但即便如此,<<
並且<<-
要重定向輸入,因此您仍然需要在讀取其輸入的命令上使用它,如paste
上面的範例所示,並使用命令替換($(...)
在上面的範例中)來傳遞該命令的輸出作為的參數export
。
請注意,您也可以執行以下操作:
export PATH="\
$HOME/.cargo/bin:\
$HOME/.bkaradzic/bx/tools/bin/linux:\
$HOME/.bkaradzic/bimg/tools/bin/linux:\
$HOME/.dotnet:\
$HOME/.android-ndk-r17b:\
$PATH"
在雙引號內(並且您確實需要雙引號來$HOME
展開雙引號),您可以\
在行尾使用來打破長邏輯的排成幾條物理的。$PATH
會不是如果包含換行符,則該\<newline>
序列將被刪除。
或者,外部引號 where~
被擴展(包括:
賦值中的 after 後)並且\<newline>
也被刪除:
PATH=\
~/.cargo/bin:\
~/.bkaradzic/bx/tools/bin/linux:\
~/.bkaradzic/bimg/tools/bin/linux:\
~/.dotnet:\
~/.android-ndk-r17b:\
$PATH
export PATH
(使用bash
,export PATH=...
也可以在這裡工作,但不適用於所有其他 shell)。
在 中zsh
,你可以這樣做:
path=(
~/.cargo/bin
~/.bkaradzic/bx/tools/bin/linux
~/.bkaradzic/bimg/tools/bin/linux
~/.dotnet
~/.android-ndk-r17b
$path
)
或者
path[1,0]=(
~/.cargo/bin
~/.bkaradzic/bx/tools/bin/linux
~/.bkaradzic/bimg/tools/bin/linux
~/.dotnet
~/.android-ndk-r17b
)
如中zsh
,$path
數組是捆綁到$PATH
變量,如 incsh
或tcsh
。