linux - 安全地从 $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
解决方案
OP 要求提供脚本,但喜欢我的评论。因此,我将其发布为答案。
你可以
echo "$PATH" | tr ':' '\n' | sort
看看双打。
不要试
# wrong command beneath
# PATH=$(echo "$PATH" | tr ':' '\n' | sort -u | tr '\n' ':')
因为顺序很重要。手动检查和编辑。
推荐阅读
- cassandra - Cassandra 3.10 - 泄漏检测和流失败
- java - 用 Java 创建 kafka 主题不起作用
- python - csv 文件在“w”模式下不写入
- c - 在C中获取小写的文件扩展名
- javascript - 如何在 j 查询中获取变量/不恒定的复选框 id 和值?
- java - 在@Transactional注释下的数据库中应用触发器后如何修复空指针异常?
- ios - 在 iOS 应用程序运行时启用/禁用 Crashlytics
- vuejs2 - 在任何组件加载 Vue.js 之前运行一个方法
- postgresql - 如何选择从 postgres 中函数的参数创建的表名
- laravel - 如何修复显示所有日期的日期过滤器。在我的日期过滤器中只显示今天和之后的日期而不是之前