Intereting Posts
Как искать несколько шаблонов в grep, игнорируя первый шаблон, если он появляется последовательно Arch Linux makepkg не удалось сжать пакет Перемещение данных из обычного раздела в lvm использование debootstrap для создания rootfs в автономном режиме Скопированы ключи GPG, не работают Различные конфигурации tmux для разных сеансов? Добавление публичного is_rsa.pub в known_hosts автоматически – как? Как просмотреть список пакетов, которые были «предложены» apt? Не удалось отправить ssh с одного сервера Google RedHat / CentOS на другой make: *** Нет целей. Остановить при создании модуля ядра Linux Как установить меньше на Oracle Linux Server Как поменять местами два поля, разделенные обратной косой чертой, и вывести их, разделенные знаком? Достигнуто ограничение на доступ к ядру inotify Невозможно использовать root ssh, несмотря на параметр «PermitRootLogin yes» в sshd_config при синхронизации времени выполнения команды с помощью sudo `time` должно быть до` sudo` или после `sudo`?

Как разорвать длинную строку в .bash_profile

У меня очень длинная строка в моем .bash_profile, как показано ниже:

export DYLD_FALLBACK_LIBRARY_PATH=/usr/local/cuda/lib:$HOME/anaconda2/lib:/usr/local/lib:/usr/lib:/opt/intel/compilers_and_libraries/mac/lib:/opt/intel/mkl/lib:$DYLD_FALLBACK_LIBRARY_PATH 

Как разбить эту строку на несколько строк?

Кроме того, .bash_profile считается сценарием оболочки? Если нет, что именно это classифицируется как? Если я это знаю, я смогу найти общее руководство по форматированию для этого файла.

 DYLD_FALLBACK_LIBRARY_PATH="/opt/intel/mkl/lib:$DYLD_FALLBACK_LIBRARY_PATH" DYLD_FALLBACK_LIBRARY_PATH="/opt/intel/compilers_and_libraries/mac/lib:$DYLD_FALLBACK_LIBRARY_PATH" DYLD_FALLBACK_LIBRARY_PATH="/usr/local/lib:/usr/lib:$DYLD_FALLBACK_LIBRARY_PATH" DYLD_FALLBACK_LIBRARY_PATH="/usr/local/cuda/lib:$HOME/anaconda2/lib:$DYLD_FALLBACK_LIBRARY_PATH" export DYLD_FALLBACK_LIBRARY_PATH 

Или с конкатенацией массивов и строк:

 paths=( /usr/local/cuda/lib "$HOME/anaconda2/lib" /usr/local/lib /usr/lib /opt/intel/compilers_and_libraries/mac/lib /opt/intel/mkl/lib ${DYLD_FALLBACK_LIBRARY_PATH:+"$DYLD_FALLBACK_LIBRARY_PATH"} ) oldIFS="$IFS"; IFS=: export DYLD_FALLBACK_LIBRARY_PATH="${paths[*]}" IFS="$oldIFS"; unset oldIFS 

Этот последний элемент в массиве расширится до значения переменной DYLD_FALLBACK_LIBRARY_PATH или до нуля, если он не установлен или пуст.

Раскрытие "${paths[*]}" будет путями, объединенными в одну строку, разделенную первым символом переменной IFS .

Вы можете сделать это, используя символ перевода строки: \ . Также вы должны объявить и экспортировать в две разные строки так:

 DYLD_FALLBACK_LIBRARY_PATH=/usr/local/cuda/lib:\ $HOME/anaconda2/lib:\ /usr/local/lib:/usr/lib:\ /opt/intel/compilers_and_libraries/mac/lib:\ /opt/intel/mkl/lib:\ $DYLD_FALLBACK_LIBRARY_PATH export DYLD_FALLBACK_LIBRARY_PATH 

Ваш профиль bash – это файл конфигурации и своего рода скрипт.

Поскольку это Bash, вы можете добавить строку ( var+=value ). Хотя вам здесь очень нужна временная переменная, так как вы ставите префиксы к исходному значению.

 tmp=/usr/local/cuda/lib tmp+=:$HOME/anaconda2/lib tmp+=:/usr/local/lib tmp+=:/usr/lib tmp+=:/opt/intel/compilers_and_libraries/mac/lib tmp+=:/opt/intel/mkl/lib export DYLD_FALLBACK_LIBRARY_PATH=$tmp:$DYLD_FALLBACK_LIBRARY_PATH unset tmp 

Обратите внимание, что, как и ваш оригинальный fragment, предполагается, что DYLD_FALLBACK_LIBRARY_PATH в начале не является пустым. Если бы это было так, это оставило бы след : в этом.


В качестве альтернативы, если ваши пути не содержат пробелов, просто поместите строку в кавычки и удалите пробел после этого:

 export DYLD_FALLBACK_LIBRARY_PATH="/usr/local/cuda/lib: $HOME/anaconda2/lib: /usr/local/lib:/usr/lib: /opt/intel/compilers_and_libraries/mac/lib: /opt/intel/mkl/lib: $DYLD_FALLBACK_LIBRARY_PATH" DYLD_FALLBACK_LIBRARY_PATH=${DYLD_FALLBACK_LIBRARY_PATH//[[:space:]]} 

Это немного глупо

 prepend() { declare -n _n=$1; _n="$2$_n"; } prepend DYLD_FALLBACK_LIBRARY_PATH /opt/intel/mkl/lib: prepend DYLD_FALLBACK_LIBRARY_PATH /opt/intel/compilers_and_libraries/mac/lib: prepend DYLD_FALLBACK_LIBRARY_PATH /usr/lib: prepend DYLD_FALLBACK_LIBRARY_PATH /usr/local/lib: prepend DYLD_FALLBACK_LIBRARY_PATH "$HOME/anaconda2/lib:" prepend DYLD_FALLBACK_LIBRARY_PATH /usr/local/cuda/lib: export DYLD_FALLBACK_LIBRARY_PATH