export PATH=$(echo ${PATH} | sed -r 's|/usr/local/cuda-9.0/bin||')
Или его более правильный вариант:
export PATH="$(printf '%s\n' "$PATH" | sed 's|/usr/local/cuda-9\.0/bin||')"
Обновляет содержимое переменной $PATH
оболочки, вызывающей эту команду, удаляя в ней первое вхождение /usr/local/cuda-9.0/bin
. Например, это изменит /bin:/opt/usr/local/cuda-9.0/bin/v2:/usr/local/cuda-9.0/bin
на /bin:/opt/v2:/usr/local/cuda-9.0/bin
, что вам не нужно.
Чтобы удалить полные элементы, вы можете:
export PATH="$(
printf ':%s:\n' "$PATH" |
sed '
:1
s|:/usr/local/cuda-9\.0/bin:|:|g; t1
s|^:||; s|:$|'
)"
Или с зш:
path=("${path[@]:#/usr/local/cuda-9.0/bin}")
Обратите внимание, что если $PATH
изначально содержал только /usr/local/cuda-9.0/bin
, то конечным результатом будет пустой $PATH
. А пустой $PATH
означает поиск исполняемых файлов в текущем каталоге , что вам не нужно. Если это возможно, вы можете сделать $PATH
что-то вроде /inexistent/to/disable/PATH/lookup
.
Обратите внимание, что в любом случае изменяется только переменная $PATH
оболочки, которая запускает этот код. Если вы хотите, чтобы это повлияло на переменную $PATH
оболочки, которая вызывает этот скрипт, вам нужно, чтобы эта оболочка была источником (, как с командой .
или source
), которая deactivate
] или сделайте deactivate
функцией этой оболочки.
Или, как вариант,вы можете заставить скрипт deactivate
выводить код оболочки, который потребуется для удаления этих записей из $PATH
(, например, добавив export -p PATH
после его изменения )и обязательно вызовите его как:
eval "$(deactivate)"
В оболочке, где вы хотите удалить эту запись из $PATH
.
Что-то вроде:
#! /bin/zsh -
path=("${path[@]:#/usr/local/cuda-9.0/bin}")
export -p PATH
Поможет ли эта статья кому-нибудь?:https://ilikelinux69.github.io/How-to-change-the-keyboard-layout-in-Busybox.