如何在Shell脚本中从PATH中删除第一个或多个段

时间:2019-01-03 13:56:18

标签: bash conda

我想在停用link中所述的conda虚拟环境时通过.sh脚本从PATH中删除CUDA目录。 env变量由echo $PATH显示。

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

所以我在/home/dude/anaconda/envs/my_v_env/etc/conda/deactivate.d/中创建一个.sh文件。

我紧随其后的 .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被自动删除,但是我在PATH中仍然有/usr/local/cuda-9.0/bin:

1 个答案:

答案 0 :(得分:0)

因此,这将使用流操作删除路径上的前两个条目:

num_entries_to_remove=2
export PATH=`echo $PATH | sed 's/\:/\n/g' | tail -n+$(expr $num_entries_to_remove + 1) | tr '\n' ':'`