已经问过这个问题,并在这里回答:https : //superuser.com/a/940041/293429
但是,提供的解决方案:执行set -e PATH[<index-of-the-path-to-be-removed]仅适用于正在运行的实例,并且在全球范围内无效。
执行echo $PATH完该命令后,如果执行了先前删除的路径,则会再次出现。
完全重置路径的一种方法是执行:set -U fish_user_paths,但是我不清楚它的作用。
真正的诀窍是找出如何删除已手动添加的路径并使之在全局范围内可用-不仅适用于当前实例吗?
有两种方法可以做到这一点,哪种方法有效取决于路径如何进入 $PATH。
可以通过例如将目录添加到 $PATH 中set PATH $PATH /some/dir。至少默认情况下,PATH 是一个全局变量,这意味着它是每个会话的。这意味着从 $PATH 中更改某些内容,或者将其从添加的位置删除(这很可能在 fish 之外,因为它继承了它),或者将set -e调用放入您的 ~/.config/fish/config.fish 中,因此它将是在每次启动时执行。
还有$fish_user_paths,它是一个通用变量(意味着它在fish 会话中携带相同的值并在它们之间同步)。在启动时和修改fish_user_paths 时,fish 将其添加到$PATH。如果在此处添加了违规目录,则执行set -e fish_user_paths[index]一次(例如在交互式会话中)。
set -e fish_user_paths将删除整个变量(同时set -U fish_user_paths将清除它)这也可以工作,但也会删除所有其他路径