Parece que você quer algo como:
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 é o comando para unir todas as linhas de um arquivo (com o separador fornecido com -d ; - significa faça isso para stdin em vez de um arquivo real , - pode ser omitido com algumas implementações, mas isso não é padrão / portátil).
Para responder à sua pergunta sobre a remoção de espaço em branco, em ksh93 / mksh , bash ou zsh :
PATH=${PATH//[[:space:]]}
removeria todos os caracteres de espaçamento, incluindo os caracteres ASCII, incluindo o caractere de nova linha. A lista de caracteres correspondentes depende da localidade e do sistema (por exemplo, nem todos os sistemas incluem o espaço sem interrupção), mas todos os ASCII (TAB, LF, VT, FF, CR, SPC) são sempre incluídos. / p>
Para obter esse caractere de nova linha em $PATH , você precisaria:
export PATH="
$HOME/.cargo/bin:
$HOME/.bkaradzic/bx/tools/bin/linux:
$HOME/.bkaradzic/bimg/tools/bin/linux:
$HOME/.dotnet:
$HOME/.android-ndk-r17b:
$PATH"
>> é um operador de redirecionamento de saída, você pode estar confuso com os operadores << ou <<- here-doc. Mas, mesmo assim, << e <<- devem redirecionar a entrada, então você ainda precisará usá-la em um comando que leia sua entrada como paste no exemplo acima e use a substituição de comando ( $(...) no exemplo acima) para que a saída desse comando seja passada como argumento para export .
Note que você também pode fazer:
export PATH="\
$HOME/.cargo/bin:\
$HOME/.bkaradzic/bx/tools/bin/linux:\
$HOME/.bkaradzic/bimg/tools/bin/linux:\
$HOME/.dotnet:\
$HOME/.android-ndk-r17b:\
$PATH"
Dentro de aspas duplas (e você precisa das aspas duplas para os $HOME a serem expandidos), você pode usar \ no final da linha para quebrar uma linha lógica longa em vários físicos . $PATH não conterá caracteres de nova linha e, em seguida, a sequência \<newline> será removida.
Ou, cotações externas em que ~ é expandido (inclusive após : quando em atribuições) e \<newline> também é removido:
PATH=\
~/.cargo/bin:\
~/.bkaradzic/bx/tools/bin/linux:\
~/.bkaradzic/bimg/tools/bin/linux:\
~/.dotnet:\
~/.android-ndk-r17b:\
$PATH
export PATH
(com bash , export PATH=... também funcionaria aqui, mas não em todas as outras camadas).
Em zsh , você poderia fazer:
path=(
~/.cargo/bin
~/.bkaradzic/bx/tools/bin/linux
~/.bkaradzic/bimg/tools/bin/linux
~/.dotnet
~/.android-ndk-r17b
$path
)
ou
path[1,0]=(
~/.cargo/bin
~/.bkaradzic/bx/tools/bin/linux
~/.bkaradzic/bimg/tools/bin/linux
~/.dotnet
~/.android-ndk-r17b
)
como em zsh , a matriz $path está vinculada à variável $PATH , como em csh ou tcsh .