用鱼壳修改PATH

时间:2014-10-05 23:19:00

标签: shell environment-variables fish

我目前正在玩fish shell而我在围绕如何设置PATH变量时遇到了一些麻烦。对于它的价值,我也使用oh-my-fish

如果我回应当前的路径,我会得到:

➜ fish echo $PATH
/usr/local/bin /usr/bin /bin /usr/sbin /sbin /usr/local/bin /opt/X11/bin /usr/texbin /Users/myname/.opam/system/bin

查看~/.config/fish/config.fish我看到以下一行

set PATH /usr/local/bin $PATH /Users/myname/.opam/system/bin

我的问题是(这个措辞可能反映了我对这个问题缺乏了解):在config.fish被处理之前,PATH变量集在哪里?即:/usr/local/bin/Users/myname/.opam/system/bin之间的所有路径来自哪里?

5 个答案:

答案 0 :(得分:63)

official fish tutorial所述,您可以修改$fish_user_paths通用变量。

从命令行运行以下命令:

set -U fish_user_paths /usr/local/bin $fish_user_paths

这会将/usr/local/bin永久地添加到您的路径中,并且也会影响当前会话和所有未来的实例。

请勿将此行添加到config.fish文件中,因为这会导致$fish_user_paths随每个shell实例一起增长。

答案 1 :(得分:8)

与所有shell一样,fish从它启动的环境继承它的PATH。如何为登录shell设置这个在操作系统之间有所不同 - 例如,在Linux上,/etc/login.defs控制所有登录的初始PATH集炮弹。我不知道这是如何在OS X上设置的。

接下来,与bashcsh一样,shell的初始化文件可能会改变路径。对于OS X上的fish,share/fish/config.fish中的代码用于从标准OS X路径配置文件/etc/paths/etc/paths.d/*加载路径。还有替代代码可以在Solaris上设置有用的路径。

还有一些代码可以从通用变量$fish_user_paths中选取路径,即right way to add something to your PATH and have it reflected across all shells

答案 2 :(得分:7)

从鱼的maintainers修改PATH的推荐命令是:

  1. 如果要运行一次命令:

    set -Ua fish_user_paths /path
    
  2. 如果要将命令添加到启动脚本中,这是幂等的:

     contains /path $fish_user_paths; or set -Ua fish_user_paths /path
    

答案 3 :(得分:1)

1。枚举用户路径:

echo $fish_user_paths | tr " " "\n" | nl

2。永久添加新的bin路径:

set -ga fish_user_paths my_appended_path

3。按索引删除第7个bin搜索路径:(请参阅#1):

set —eg fish_user_paths[7]

答案 4 :(得分:1)

为了设置shell config file的变量,我做了如下操作:

设置任何用户特定变量的主要命令是

set -Ua fish_user_paths /path/to/bin/directory/

set -Ux fish_user_paths /usr/local/bin 运行touch ~/.config/fish/config.fish,除非它存在。

  1. RUSTset -Ua fish_user_paths $HOME/.cargo/bin

  2. JAVAset -Ua fish_user_paths /path/to/java/bin

  3. Nodenvm:确保随后正确安装了nvm

    omf install nvm

    set -gx NVM_DIR /path/to/nvm

  4. Goset -Ua fish_user_paths /path/to/go/bin/

  5. Scalaset -Ua fish_user_paths /path/to/scala/bin/

  6. Groovyset -Ua fish_user_paths /path/to/groovy/bin/

  7. Mavenset -Ua fish_user_paths /path/to/mvn/bin/

  8. Gradleset -Ua fish_user_paths /path/to/groovy/bin/

最后,刷新您的终端。

在某些操作系统(例如OpenSuse)中的PS,请删除a

The result after configuration