这个问题已经被问到,并在这里回答:https://superuser.com/a/940041/293429

但是,提供的解决方案:执行set -e PATH [< path-of-the-path-to-removed]仅适用于正在运行的实例,并且通用无效. 执行该命令后,如果执行echo $PATH,则会再次发生先前删除的路径. 完全重置路径的一种方法是执行:set -U fish\_user\_paths,但我不清楚它的作用. 真正的诀窍是找出如何删除已手动添加的路径并使其全局可用 – 不仅仅是当前实例?

解决方法:

有两种方法可以做到这一点,哪一种有效取决于路径如何进入$PATH.


可以通过例如将目录添加到$PATH.设置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会清除它),这也可以工作,但也会删除所有其他路径

标签: shell, linux, fish

相关文章推荐

添加新评论,含*的栏目为必填