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
.