私は以下を試しました:
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"
>>
<<
または<<-
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>
シーケンスが削除されます。
または、引用符が~
展開され(:
割り当ての後ろを含む)、\<newline>
削除される外部部分もあります。
PATH=\
~/.cargo/bin:\
~/.bkaradzic/bx/tools/bin/linux:\
~/.bkaradzic/bimg/tools/bin/linux:\
~/.dotnet:\
~/.android-ndk-r17b:\
$PATH
export PATH
(使用するとbash
ここでもexport PATH=...
機能しますが、他のすべてのシェルでは機能しません)。
では、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
バンドルinまたは$PATH
のような変数に。csh
tcsh