Intereting Posts
Получить команды, которые пользователь может запустить из / etc / sudoers? удалять строки в csv на основе количества символов в определенном столбце Через NM говорит, что я подключен к беспроводной сети, firefox не может подключиться к любому сайту Как я могу удалить Kerberos для passwd? Посмотрите, какое монтирование файловой системы используется с -t auto Компьютер не загружается в Fedora, а вместо этого используется управление Shim UEFI Как заставить параметр CONFIG_ оставаться включенным? Conky на корневом рабочем столе не отображает изменения файла конфигурации Ошибка компиляции Ocaml в AIX 6.1 Как получить отчет о делах для дифференциации по часам дня Что такое пересылка порта ssh и какая разница между локальной и удаленной пересылкой портов не может открыть перенесенный веб-сайт из старых DS на новые DS Почему постфиксный пользователь не может даже читать свои собственные файлы? Использование rsync для копирования с локального на удаленный сервер с помощью cronjob с запросом пароля Установите Ghostscript v 9.05 (или новее) на CentOS

Как удалить пробелы ASCII / Eols из переменной в Bash?

Я пробовал следующее:

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 

Какие-либо предложения?

Вы, кажется, думаете, что первая строка начнет расширение пути. Это неправда. Первая строка – полная команда.

 export PATH= >> - 

Строка выше, написанная с некоторыми пробелами для лучшего понимания, установит PATH в пустую строку и добавит вывод команды в файл - .

Следующая строка – следующая команда

 $HOME/.cargo/bin: 

Это распространяется на имя каталога, который, вероятно, существует в вашей системе, плюс двоеточие. Результат

/home/hydroper/.cargo/bin: : /home/hydroper/.cargo/bin: Нет такого файла или каталога

Похоже, вы хотите что-то вроде:

 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 ; - означает сделать это для stdin вместо реального файла , - может быть опущено в некоторых реализациях, но это не стандартно / переносимо).

Чтобы ответить на ваш вопрос об удалении пробелов, в ksh93 / mksh , bash или zsh :

 PATH=${PATH//[[:space:]]} 

удалит все пробелы, включая символы ASCII, включая символ новой строки. Список совпадающих символов зависит от локали и системы (например, не все системы include неразрывный пробел), но все символы 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 не будет содержать символов новой строки, тогда последовательность \ удаляется.

Или внешние кавычки, где ~ раскрывается (в том числе после : в назначениях) и \ также удаляется:

 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 как в csh или tcsh .