ohmyzsh遇到(eval):43: defining function based on alias `xxx‘的问题

好想发疯

为什么为什么,kamisama,为什么这种奇怪的bug总要发生在我的身上,呀哒呦呀哒呦,一定是哪里做错了desu,demo…bokuwa真的找到了解决の道啊!不要小看Google的力量啊铁咩(怒音!

TL; DR

ohmyzsh的配置文件里给某个 xxx 定义了一个alias yyy,你在后面又定义了这个 xxx 相关的函数,并且没有用标准的函数写法,就会出现这个问题

这里把这个函数改成标准的函数写法就可以了,不要把这个函数当成变量用

问题描述

每次使用ohmyzsh更改了配置以后,执行 source ~/.zshrc 时总会弹出这个警告

(eval):43: defining function based on alias `conda'
(eval):43: parse error near `()'

因为平时用python环境经常用到conda,所以这个配置文件里也会有conda相关的函数,但如果只是简单的函数定义其实是不会有这个问题的,那么问题出在哪呢?

问题溯源

上面的问题,其实是因为除了正常使用conda外,我还给conda链接了一个别名,毕竟每次 conda install 时候配置检查真的是太痛苦了,所以我就转用了 mamba(这里安利一下,貌似很多人都不知道还有这么好用的一个替代库),然后给 conda 起了一个别名,这样我顺手用的时候就直接调用 mamba 了:

alias conda='mamba'

但!!! 如果我也只是起了一个别名就算了,这个错误还是不会发生,这里要提一句,如果你也用conda的话,你会发现你的 .bashrc 或者 .zshrc 或者什么shell的配置文件里有这么一段

# >>> conda initialize >>>
# !! Contents within this block are managed by 'conda init' !!
__conda_setup="$('/home/thinszx/miniconda3/bin/conda' 'shell.zsh' 'hook' 2> /dev/null)"
if [ $? -eq 0 ]; theneval "$__conda_setup"
elseif [ -f "/home/thinszx/miniconda3/etc/profile.d/conda.sh" ]; then. "/home/thinszx/miniconda3/etc/profile.d/conda.sh"elseexport PATH="/home/thinszx/miniconda3/bin:$PATH"fi
fi
unset __conda_setup
# <<< conda initialize <<<

问题就出在前三行,其实这里是定义了一个函数 __conda_setup ,每次shell初始化都会调用一次这个函数,这个函数调用了 zshhook 特性,可以粗略地理解成这里把 conda 指令加到 zsh 的环境变量里去了,然后你就可以调用它啦,但是这个函数其实并不是按照标准的shell函数写法定义的,有点像那种函数式编程,所以把这一行改成标准function写法就可以

# ...
function __conda_setup {"$('/home/thinszx/miniconda3/bin/conda' 'shell.zsh' 'hook' 2> /dev/null)"}
# ...

原因

懒得找了哈哈哈,不想找了,等我研究生顺利毕业再说吧,有人刷到了记得提醒我(其实下面第一个参考链接说了原因,不过我还没看源码)

参考

https://github.com/ohmyzsh/ohmyzsh/issues/6723#issue-313463147

https://www.digitalocean.com/community/tutorials/how-to-use-editors-regex-and-hooks-with-z-shell

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/7057.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

网络安全 Day20-计算机网络基础知识05(网络原理)

计算机网络基础知识05&#xff08;网络原理&#xff09; 1. OSI 模型2. VMware虚拟机NAT模式下上网原理3. 不能上网故障排查 1. OSI 模型 OSI 7层网络通信原理模型 OSI 国际网互联 OSI 数据包封装解封装过程 北京局域网主机A到深圳局域网主机B数据工作流程 2. VMware虚拟机N…

VUE中的生命周期、每个生命周期可以干什么

生命周期 就VUE来说就是一个程序的即将创建到销毁的一个过程&#xff0c;也就是vm对象实例从创建到最终销毁的过程。 VUE生命周期4个阶段8个钩子函数(到某一阶段自动调用的函数) 1.初始阶段&#xff08;虚拟的DOM生成&#xff09; beforeCreate() 初始化事件对象和生命周期…

人类机器人编程的心理机制(一)

\qquad 本文中的人类机器人编程(Human Robot Programming)意指“基于创伤的脑控(trauma-based mind control, T.B.M.C)”或“基于创伤的编程(trauma-based programming)”&#xff0c;文中用英文缩写“T.B.M.C”指代。T.B.M.C的操纵主体是施加编程的个人或机构&#xff0c;文中…

CentOS安装OpenBLAS教程

OpenBLAS 是一个基于BSD许可&#xff08;开源&#xff09;发行的优化 BLAS 计算库&#xff0c;BLAS&#xff08;Basic Linear Algebra Subprograms 基础线性代数程序集&#xff09;是一个应用程序接口&#xff08;API&#xff09;标准&#xff0c;用以规范发布基础线性代数操作…

【图论】二分图

二分图&#xff0c;即可以将图中的所有顶点分层两个点集&#xff0c;每个点集内部没有边 判定图为二分图的充要条件&#xff1a;有向连通图不含奇数环 1、染色法 可以解决二分图判断的问题 步骤与基本思路 遍历图中每一个点&#xff0c;若该点未被染色&#xff0c;则遍历该…

Unity如何快速接入iOS和GooglePlay的成就排行榜等GameCenter功能

一般在游戏开发中&#xff0c;经常有成就排行榜的需求&#xff0c;按照我们的理解&#xff0c;通常是要自己导入谷歌的sdk&#xff0c;或者苹果的sdk&#xff0c;然后封装后通过桥接来调用。 不用这么复杂&#xff0c;本鱼蛋(egostudio 防爬)告诉大家一个方法&#xff0c;其实…

el-table 表头设置渐变色

<el-table :data"tableData" stripe><el-table-column prop"name" label"测试" align"left"></el-table-column><el-table-column prop"code" label"测试1" align"left"></…

Sui Move与标准Move的有哪些区别和根本性创新

Sui网络将Sui Move作为其本地编程语言&#xff0c;使用Sui Move编写的apps利用Sui的共识机制&#xff0c;实现了令人印象深刻的交易性能。 然而&#xff0c;熟悉Move编程语言的开发者在探索Sui文档时可能会感到困惑&#xff0c;因为该文档着重介绍了对象和一些指令&#xff0c…

kafka消费者api和分区分配和offset消费

kafka消费者 消费者的消费方式为主动从broker拉取消息&#xff0c;由于消费者的消费速度不同&#xff0c;由broker决定消息发送速度难以适应所有消费者的能力 拉取数据的问题在于&#xff0c;消费者可能会获得空数据 消费者组工作流程 Consumer Group&#xff08;CG&#x…

刷题记:无重复字符的最长子串

● 给定一个字符串 s &#xff0c;请你找出其中不含有重复字符的 最长子串 的长度。 输入: s “abcabcbb” 输出: 3 解释: 因为无重复字符的最长子串是 “abc”&#xff0c;所以其长度为 3。 输入: s “bbbbb” 输出: 1 解释: 因为无重复字符的最长子串是 “b”&#xff0c;所…

git 提示 不能合并

今天A分支合并B分支&#xff0c;提示“不能合并” 最终发现&#xff0c;是另一个分支的版本落后导致&#xff0c;但是git并未提示出来 有遇到这种问题可以先检查下版本

如何有效跟踪你的计费时间?

对于自由职业者、小型企业和远程团队来说&#xff0c;时间跟踪是必需的。了解自己在单个项目或任务上投入了多少时间&#xff0c;可以帮助他们有效管理资源和优化工作流程。 然而&#xff0c;在向客户收费时&#xff0c;时间跟踪多了一层复杂性&#xff1a;不仅需要跟踪所花费…

Java实现商品ID获取京东商品历史价格数据方法

要通过京东的API获取商品历史价格&#xff0c;您可以使用京东开放平台提供的接口来实现。以下是一种使用Java编程语言实现的示例&#xff0c;展示如何通过京东开放平台API获取商品历史价格&#xff1a; 首先&#xff0c;确保您已注册成为京东开放平台的开发者&#xff0c;并创…

Linux工具——vim

安装vim yum -y install vim 如果安装失败&#xff0c;提示Could not resolve host:mirrorlist.centos.org: Unkown error的问题&#xff0c;需要替换yum源&#xff0c;可以参考这个文章 配置vim root的vim配置文件在 /etc/vimrc 普通用户的vim配置文件在用户对应家目录下&a…

ElacticSearch入门

ElacticSearch 什么是Elasticsearch&#xff1f; Elasticsearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎&#xff0c;基于RESTful web接口。Elasticsearch是用Java语言开发的&#xff0c;并作为Apache许可条款下的开放源码发布&#xff0c…

RabbitMQ的确认机制

RabbitMQ的确认机制 生产者确认 public class ProductionMessageConfirm {public static void Send(){ConnectionFactory factory new ConnectionFactory();factory.HostName "localhost";//RabbitMQ服务在本地运行factory.UserName "guest";//用户名…

react实现页面动态表单设计器(自定义推拽表单)

react实现页面动态表单设计器&#xff08;自定义推拽表单&#xff09; 实现效果安装插件使用组件介绍基本设置&#xff0c;可设置控件标签&#xff0c;是否必填&#xff0c;校验规则校验规则有如下几种多选&#xff0c;下拉&#xff0c;单选可动态设置每个选择的label以及值 实…

一百三十三、Hive——Hive外部表加载含有JSON格式字段的CSV文件数据

一、目标 在Hive的ODS层建外部表&#xff0c;然后加载HDFS中的CSV文件数据 注意&#xff1a;CSV文件中含有未解析的JSON格式的字段数据&#xff0c;并且JSON字段中还有逗号 二、第一次建外部表&#xff0c;直接以&#xff0c;分隔行字段&#xff0c;结果JSON数据只显示一部分…

vue3相对路径图片编译后无法显示

<img src"../assets/image/ai_content_12x.png" /> 是这么写的&#xff0c;图片用的相对路径&#xff0c;在本地不编译的话是没有问题正常。 但是编译后你就会发现在域名后一旦有路径&#xff0c;整个vue的 img js css 的加载路径都会报错。 需要在vue.config.…

【1++的C++初阶】之list

&#x1f44d;作者主页&#xff1a;进击的1 &#x1f929; 专栏链接&#xff1a;【1的C初阶】 文章目录 一&#xff0c;什么是list二&#xff0c;构造与析构2.1 结点结构2.2 链表结构2.3 迭代器结构 三&#xff0c;部分重要接口的作用及其实现3.1 迭代器相关的接口3.2 list相关…