我有以下路径。
PATH=/home/josemserrajr/anaconda3/bin:/home/josemserrajr/bin:/homejosemserrajr/anaconda3/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/us
我想取消设置其中一个变量,方法如下:
unset PATH=/homejosemserrajr/anaconda3/bin:
答案1
PATH 实际上是一个单一变量,它有一个字符串值。该值由目录路径组成,这些路径以冒号 ( ) 分隔:
。
通常,您的 PATH 变量在文件中定义并导出~/.profile
,您可以使用自己喜欢的文本编辑器对其进行编辑。如果找不到/home/josemserrajr/anaconda3/bin
添加的位置,您可以重置 PATH 变量,并使用以下命令从字符串中明确删除该路径:
export PATH="$(echo "$PATH" | sed 's|/home/josemserrajr/anaconda3/bin||g' | sed 's|^:*||' | sed 's|:*$||')"
该命令使用一些bash
和sed
来执行以下操作:
/home/josemserrajr/anaconda3/bin
从当前 PATH 值中删除所有出现的字符串。^:*
从步骤 1 的结果字符串中删除任何(0 个或多个)前导冒号(与正则表达式匹配)。:*$
从步骤 2 的结果字符串中删除任何(0 个或多个)尾随冒号(与正则表达式匹配)。- 将步骤 3 的结果字符串保存到 PATH 变量中(覆盖旧值)。
- 将新的 PATH 值导出到您的环境,以便应用程序可以访问它。
通过将此命令添加到文件末尾,~/.profile
您应该能够从 PATH 变量中删除不需要的路径。
答案2
您可以使用参数扩展从变量的值中删除子字符串。例如,给定
echo "$var"
/home/josemserrajr/anaconda3/bin:/home/josemserrajr/bin:/homejosemserrajr/anaconda3/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/us
然后要删除子字符串的第一个实例/homejosemserrajr/anaconda3/bin:
,您可以使用
$ echo "${var/\/homejosemserrajr\/anaconda3\/bin:}"
/home/josemserrajr/anaconda3/bin:/home/josemserrajr/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/us
(请注意,反斜杠用于转义路径中的文字斜杠)。要将此应用于您的PATH
,
PATH="${PATH/\/homejosemserrajr\/anaconda3\/bin:}"