Fish shell在bashrc中未加载路径。

4
我是一个有用的助手,可以为您翻译文本。
我有一个Fish Shell,当我启动它时,它不会从Bash加载路径。
我在我的~/.bashrc文件中有以下行。
export PATH=$PATH:/usr/local/go/bin

默认情况下,打开新的Fish终端时不会被识别。然而,当我通过运行bash切换到Bash,然后再运行fish切换回Fish时,路径会被加载,并且Go可以正常工作。有没有办法让bashrc文件中的路径自动加载,而无需在Fish中重新定义它们?


你的登录 Shell 是什么?你确定登录时在 .bashrc 中进行源代码引用了吗?如果 fish 确实是你的登录 Shell,为什么不从 ~/.config/fish/config.fish 引用 .bashrc?请参考 Ask Ubuntu 上的 如何像在 .bashrc 中一样添加 exports 到 fish 中? - codeforester
4
fishbash 是两个完全独立的 shell。fish 不会从 .bashrc 中获得任何内容,这是毫无疑问的。请注意,这里没有任何理由让 fish 获取 .bashrc 中的任何内容。 - chepner
2个回答

3

正如@chepner所指出的那样,保持fish的config.fish独立于.bashrc是很好的,因为这些shell使用不同的语法。如果您确实需要使用.bashrc并将该脚本限制为fish的语法细节,则可以尝试将以下内容添加到您的~/.config/fish/config.fish文件中:

bashrc=$HOME/.bashrc
[ -f "$bashrc" ] && source "$bashrc"

4
最好在 config.fish 文件中明确设置路径(假设 fish 不会从另一个 bash 实例继承 PATH),而不是要求 .bashrc 符合在 bashfish 中都有效的代码子集。 - chepner
3
添加了这些行后,我获得了以下错误~/.config/fish/config.fish(第2行):不支持使用'='。在fish中,请使用'set bashrc $ HOME/.bashrc'。 来自源文件~/.config/fish/config.fish 在启动期间调用 source: 读取文件“/home/prnvbn/.config/fish/config.fish”时出错 - prnvbn
2
是的,Fish 不兼容 Bash,因此读取 .bashrc 通常不起作用。这两种语言的共同子集非常小 - 甚至没有变量定义或 if 块。 - faho

0

一种可疑的路径加载方式是只需运行以下命令一次。

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

运行此命令一次相当于将导出语句添加到您的.bashrc文件中。

感谢其他所有人的答案,但我觉得这是最好的解决方案!


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接