2016-01-20 53 views
2

这个问题已经被问过了,在这里找到答案:https://superuser.com/a/940041/293429

然而,所提供的解决方案:执行set -e PATH[<index-of-the-path-to-be-removed]仅适用于正在运行的实例和无效普遍。

执行该命令后,如果执行echo $PATH之前删除的路径将再次发生。

完全重置路径的一种方法是执行:set -U fish_user_paths,但我不清楚它的功能。

真正的窍门是找出如何删除已手动添加的路径,并使其全局可用 - 不仅是当前实例?

+2

参见http://fishshell.com/docs/current/tutorial.html#tut_path为一些信息。设置通用变量'fish_user_paths'将重建所有yourfish会话中的PATH变量。 –

+0

@charles,nope,那不是鱼配置文件。他们住在〜/ .config/fish –

回答

4

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

可以通过例如将目录添加到$ PATH中。 set PATH $PATH /some/dir。至少默认情况下,PATH是一个全局变量,这意味着它是每个会话。这意味着要从$ PATH中改变某些东西,或者从它添加的地方删除它(这可能是继承它之外的鱼之外的地方),或者将你的〜/ .config/fish/config.fish中的set -e调用放到它上面在每次开始时执行。

还有$ fish_user_paths,它是一个通用变量(意味着它在鱼会话中具有相同的值,并且在它们之间同步)。在启动时和每当修改fish_user_paths时,鱼都会将其添加到$ PATH中。如果此处添加了违规目录,请执行set -e fish_user_paths[index]一次(例如,在交互式会话中)。

set -e fish_user_paths将消除整个可变(而set -U fish_user_paths将清除它),这也将工作,但也会除去所有其它路径

+0

'set -e fish_user_paths [index]'适合押注我的情况。谢谢@faho –