首页 > 解决方案 > 安全地从 $PATH 中删除重复项,Ubuntu 16.04

问题描述

我是一名经验不足 7 个月的新程序员。我想清理我$PATH的,因为它充满了许多重复。

例如

echo $PATH

产生这种混乱

/home/john/.rvm/gems/ruby-2.4.1/bin:/home/john/.rvm/gems/ruby-2.4.1@global/bin:/home/john/.rvm/rubies/ruby-2.4.1/bin:/home/john/.rbenv/shims:/home/john/.rbenv/bin:/home/john/.rbenv/plugins/rubybuild/bin:/home/john/.rbenv/shims:/home/john/.rbenv/bin:/home/john/bin:/home/john/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/home/john/.rvm/bin

经过一番研究,我发现了这个。它说这个命令

PATH="$(perl -e 'print join(":", grep { not $seen{$_}++ } split(/:/, $ENV{PATH}))')"

将安全地删除重复项。这是真的?有更好的方法吗?不想破坏任何东西。

我正在运行 Ubuntu 16.04

标签: linuxshellubuntupath

解决方案


OP 要求提供脚本,但喜欢我的评论。因此,我将其发布为答案。

你可以

echo "$PATH" | tr ':' '\n' | sort 

看看双打。

不要试

# wrong command beneath
# PATH=$(echo "$PATH" | tr ':' '\n' | sort -u | tr '\n' ':')

因为顺序很重要。手动检查和编辑。


推荐阅读