- 已关闭。**此问题不符合Stack Overflow guidelines。当前不接受答案。
此问题似乎与a specific programming problem, a software algorithm, or software tools primarily used by programmers无关。如果您认为此问题与another Stack Exchange site的主题有关,您可以留下评论,说明在何处可以回答此问题。
1年前关闭。
社区在6个月前审查了是否重新讨论该问题,并将其关闭:
原始关闭原因未解决
Improve this question
我目前正在使用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
之间的所有路径来自何处?
8条答案
按热度按时间guykilcj1#
正如fish官方教程中所述,您可以修改
$fish_user_paths
通用变量。从命令行运行以下命令一次:
这将把
/usr/local/bin
永久地放在路径前面,并且会影响当前会话和所有未来的示例,因为-U参数将使变量成为 universal。来自
fish
文档:...(注意:您不应该将这一行添加到
config.fish
中。如果您这样做,则每次运行fish时变量都会变长!)fish_user_paths,附加在PATH前面的目录列表。这可以是一个通用变量。
lqfhib0f2#
当前答案
截至2021年3月发布的fish 3.2.0,规范方法为:
这在
config.fish
中以交互方式一次性工作-在config.fish
的情况下不会产生重复。以前对fish〈3.2.0的回答:
从fish的maintainers修改
PATH
的建议命令如下:1.如果要运行命令一次:
1.如果要向启动脚本中添加命令,则此函数是幂等的:
m1m5dgzv3#
像所有的shell一样,fish从它启动的环境中继承了它的PATH。不同的操作系统对登录shell设置的方式不同--例如,在Linux上,
/etc/login.defs
控制所有登录shell的初始PATH设置。接下来,像
bash
或csh
,shell的初始化文件可能会改变路径。对于OS X上的fish,share/fish/config.fish
中有代码从标准OS X路径配置文件/etc/paths
和/etc/paths.d/*
加载路径。在Solaris上有替代代码设置有用的路径。还有一些代码可以从通用变量
$fish_user_paths
中获取路径,这是向PATH添加内容并使其在所有shell中反映的正确方法。41zrol4v4#
1.枚举用户路径:
2.追加新的bin路径,永久:
3.按索引删除第7个bin搜索路径:(参见#1):
dohp0rv55#
对我起作用的方式是:
在
~/.config/fish/config.fish
中添加以下行:set -gx PATH /path/to/dir1 /path/to/dir2 $PATH
这会将这些目录附加到$PATH环境变量中。iq0todco6#
为了设置
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
,除非它存在。RUST
:set -Ua fish_user_paths $HOME/.cargo/bin
JAVA
:set -Ua fish_user_paths /path/to/java/bin
Node
和nvm
:确保你已经安装nvm
正确然后x1米11米1x
set -gx NVM_DIR /path/to/nvm
1.一个月十三个月一个月:一个月十四个月
1.一个月十五日一次:一个月十六日一次
1.一个月十七个月一个月:一个月十八个月一个月
1.一个月十九个月一个月:一个月二十个月一个月
1.一个月21日一个月:一个月22日一个月
最后,刷新终端。
某些操作系统(如OpenSuse)中的PS,删除
a
。esbemjvw7#
以上解决方案不能很好地与python虚拟环境一起工作。虚拟环境的路径不会是列表中的第一个。
为了设置一次路径,并且在每次启动python虚拟环境时不覆盖它
您需要在
~/.config/fish/config.fish
中有条件地更改路径,如下所示:这将确保您在$PATH中有新的路径,但是当您为虚拟环境生成新的shell时,您将不会再次添加这些路径。
不幸的是,使用
set -Ua fish_user_paths
设置的路径将在$PATH的开头结束,从而使您的虚拟环境路径远离第一个位置。vi4fp9gy8#
您可以使用类似下面的脚本来轻松添加或删除路径:
从https://www.tai.ro/2021/10/22/how-to-switch-path-in-fish-shell-with-example-script/复制