![修改后的 PATH 没有 /usr/bin](https://linux22.com/image/174016/%E4%BF%AE%E6%94%B9%E5%90%8E%E7%9A%84%20PATH%20%E6%B2%A1%E6%9C%89%20%2Fusr%2Fbin.png)
如何保存不包含的PATH
修改?PATH_MOD
/usr/bin
输出PATH
:
/opt/conda/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
答案1
你有没有尝试过:
PATH_MOD=$(echo $PATH | sed 's/:\/usr\/bin:/:/g')
编辑:双 \ 以使反斜杠可见
答案2
在zsh
外壳中:
path=("${path[@]:#/usr/bin}")
更新$PATH
到位。或者改为设置$PATH_MOD
:
PATH_MOD=${(j[:])path:#/usr/bin}
在zsh
,中,$PATH
与数组相关联$path
(如在 中(t)csh
),并${array:#pattern}
扩展到数组中与模式不匹配的元素。
请注意,如果$PATH
是 just /usr/bin
,那么它就会变成空的。对于zsh
,这意味着在任何地方都找不到命令,但对于大多数其他内容,这意味着当前工作目录正在寻找命令!
4.4+中的等效功能bash
可以使用一些辅助函数来完成,例如:
remove_element() {
local - text=$1 IFS=$2 element=$3 i
set -o noglob
set -- $text""
for i do
if [ "$i" != "$element" ]; then
set -- "$@" "$i"
fi
shift
done
REPLY="$*"
}
remove_element "$PATH" : /usr/bin
PATH_MOD=$REPLY