鱼壳未从 bashrc 加载到路径中[关闭]

Posted

技术标签:

【中文标题】鱼壳未从 bashrc 加载到路径中[关闭]【英文标题】:Fish shell not loading in paths from bashrc [closed] 【发布时间】:2021-11-26 17:36:54 【问题描述】:

我有一个鱼壳,当我启动它时它不会从 bash 加载路径。

我的~/.bashrc中有以下行

export PATH=$PATH:/usr/local/go/bin

当一个新的fish终端默认打开时,go不会被识别。但是,当我通过运行bash 切换到bash,然后通过运行fish 回到fish 时,路径被加载并开始工作。有没有办法让bashrc 文件中的路径自动加载而无需我在fish 中再次定义它们?

【问题讨论】:

你的登录shell是什么?您确定在登录时使用.bashrc 进行采购吗?如果 fish 确实是你的登录 shell,为什么不从 ~/.config/fish/config.fish 获取 .bashrc 呢?请参阅 Ask Ubuntu 上的 How to add exports to fish like in .bashrc?。 fishbash 是两个完全独立的外壳。没有理由为什么fish会从.bashrc那里得到任何东西。 【参考方案1】:

正如@chepner 正确指出的那样,最好让fish 的config.fish 独立于.bashrc,因为这些shell 使用不同的语法。如果您确实需要使用 .bashrc 并将该脚本限制为 fish 的语法细微差别,请尝试将其添加到您的 ~/.config/fish/config.fish 文件中:

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

【讨论】:

最好在config.fish 中明确设置路径(假设fish 不会从bash 的另一个实例继承PATH)而不是要求.bashrc 符合在bashfish 中都有效的代码子集。 添加行后我收到以下错误~/.config/fish/config.fish (line 2): Unsupported use of '='. In fish, please use 'set bashrc $HOME/.bashrc'. from sourcing file ~/.config/fish/config.fish called during startup source: Error while reading file '/home/prnvbn/.config/fish/config.fish' 是的,fish 与 bash 不兼容,因此读取 .bashrc 通常不起作用。这两种语言的共同子集非常小——甚至没有变量定义或if 块。【参考方案2】:

在路径中加载的可疑方法是只运行一次以下命令。

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

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

感谢其他人的回答,但我觉得这最好地解决了我的问题!

【讨论】:

以上是关于鱼壳未从 bashrc 加载到路径中[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

未找到模块:错误:包路径 ./locales 在角度更新到 13 后未从包中导出

我在我的电脑上安装了鱼壳,现在我无法打开 VS 代码终端 [关闭]

未从同一目录加载 C++ PDB 符号

POST 路由未从根路径 Laravel 5.2 中列出

未从SDK文件夹加载文件dx.jar

添加 .bashrc 文件的路径?