Как удалить первый сегмент или сегменты из PATH в сценарии оболочки - PullRequest
0 голосов
/ 03 января 2019

Я хотел удалить каталог CUDA из PATH с помощью сценария .sh при деактивации виртуальной среды conda, как описано в этой ссылке .Переменные env отображаются как echo $PATH.

/usr/local/cuda-9.0/bin:/home/dude/anaconda/envs/my_v_env/bin:/usr/sbin:/usr/bin:

. Поэтому я создаю файл .sh в /home/dude/anaconda/envs/my_v_env/etc/conda/deactivate.d/.

Мой последовавший .sh скрипт ничего не меняет, но он ДЕЛАЕТ в терминале (этот скрипт будет автоматически выполняться, когда я conda deactivate):

export PATH=$(echo ${PATH} | sed -r 's|/usr/local/cuda-9.0/bin||')

Я хочу только после деактивацииvenv:

/usr/sbin:/usr/bin:

/home/dude/anaconda/envs/my_v_env/bin удаляется автоматически, но у меня все еще есть сегмент /usr/local/cuda-9.0/bin: в ПУТИ

1 Ответ

0 голосов
/ 06 января 2019

Таким образом, это удаляет первые две записи на пути с помощью потоковой манипуляции:

num_entries_to_remove=2
export PATH=`echo $PATH | sed 's/\:/\n/g' | tail -n+$(expr $num_entries_to_remove + 1) | tr '\n' ':'`
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...