Mac系统,如何设置OLLAMA_HOST环境变量?
发布于 作者:苏南大叔 来源:程序如此灵动~
这大模型相关技术的学习,实在是太耗费硬件资源了!所以,苏南大叔把这些相关软件分散的安装在了多个电脑上面。本文描述在mac电脑上面安装ollama,并设置环境变量的问题,实在是有些打破认知。

苏南大叔的“程序如此灵动”博客,记录苏南大叔的代码编程经验总结。测试环境:win10@22h2,mac@13.7.6。没想到一个简简单单的设置环境变量,在mac系统上竟有这么多麻烦的事情。
ollama
ollama在windows系统下的基本安装,及安装deepseek大模型的方案,参考文章:
在mac系统下,下载到ollama的安装包后,也需要有个安装的过程。安装完成后,得到了:
ollama命令行,位置:/usr/local/bin/ollama。- 托盘区的小图标
ollama.app,和windows下的情况差不多。 - 在系统=>通用=>启动项里面,自动启动的
ollama.app。plist名称是:application.com.electron.ollama.17407221.17407227。
那么,下一步设置OLLAMA_HOST环境变量,开启非本机的访问权限。故事从此展开。
由于mac系统就一个分区,并且软链接功能强大,所以,设置OLLAMA_MODELS变量似乎没有必要。所以,这里仅仅设置OLLAMA_HOST。
分支一:命令行的环境变量
大家对于mac环境变量的概念,就起源于命令行的配置文件。而mac系统的命令行,经历了从bash到zsh的转变。
bash的配置文件:~/.bash_profile和~/.profile。【已弃用】zsh的配置文件:~/.zshrc。
为了兼容以前的配置,
- 会在
zsh的配置文件中,执行source ~/.profile。 - 按照既往经验,只需要修改文件
~/.zshrc,增加下面的代码即可。
export OLLAMA_HOST="0.0.0.0:11434"然而,托盘区退出,再次启动ollama.app之后,OLLAMA_HOST没有生效!但是打开命令行界面(zsh或者item2)后,执行ollama serve命令,生效了!
分支二:软件界面的环境变量
在mac系统中,这些点击图标打开的软件的环境变量,是不读取~/.zshrc等等配置文件的,它们有着其它的环境变量逻辑。
其实在.pist文件中直接执行bash或者zsh,它们也是默认不读取配置文件的。
通过下面的命令进行设置:
launchctl setenv OLLAMA_HOST 0.0.0.0:11434可以通过下面的命令检查是否设置成功:
launchctl getenv OLLAMA_HOST执行后,再通过图标打开ollama.app就可以生效了。
然而,故事还没有完。这个设置环境变量的命令,重启电脑就失效了!或者说注销当前用户后,这个环境变量就失效了。当然,鉴于苹果电脑有不关机的传统,这个launchctl setenv方案也算是可以解决问题。
plist完美解决方案
为了追求更加完美的解决方案,可以考虑通过.plist编辑开机启动项。当然了,事情发展到这里,解决方案就非常多了,待后续补充。这里就先说一个苏南大叔认为最完美的解决方案。
新增com.sunan.test.plist(名称随意,但是名字字母排序会影响启动顺序)文件,位置/Users/sunan/Library/LaunchAgents/(意味着用户登陆之后才会被执行):
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>com.sunan.test</string>
<key>EnvironmentVariables</key>
<dict>
<key>OLLAMA_HOST</key>
<string>0.0.0.0:11434</string>
</dict>
<key>ProgramArguments</key>
<array>
<string>/usr/local/bin/ollama</string>
<string>serve</string>
</array>
<key>RunAtLoad</key>
<true/>
</dict>
</plist>然后执行命令:
launchctl load ~/Library/LaunchAgents/com.sunan.test.plist不能执行多次load,会报错input or output error。所以适当的时候,可以执行:
launchctl unload ~/Library/LaunchAgents/com.sunan.test.plist同时,也可以看到,苏南大叔在这里写的.plist脚本,可能会被系统标记为了“不明开发者”,同时会在执行的时候在右上角进行重点提示。这种方案下,重启系统后,依然也是生效的。
这个plist所表述的方式,类似下面这条常见的node项目的语句:
OLLAMA_HOST=0.0.0.0:11434 && /usr/local/bin/ollama serve所以,这是第三种传递环境变量的方式:在可执行文件命令行之前,增加环境变量传递。
结语
当然了,本文的实践过程中,对通过.plist文件控制水果电脑的开机启动项的方式,有了更深的认知。后续再新开文章,对本文的第三种情况,展开讨论。