You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何Shell脚本执行zsh --login后yarn start无法运行?

问题原因及解决方案

问题原因

你的脚本里,env /usr/bin/arch -x86_64 /bin/zsh --login会启动一个全新的x86_64架构的zsh登录shell进程。原脚本会暂停执行,直到这个新shell被你手动退出(比如输入exit)之后,才会继续运行后面的yarn start——但这时候你已经退出了x86_64环境,而且之前的目录切换是在原脚本进程中完成的,新shell默认不会继承这个切换后的目录。

而拆分两个别名执行时,你是先通过intel启动新的x86_64 zsh,然后在这个新shell内部执行abudget,所以cd和yarn start都是在x86_64环境下运行的,自然能正常执行。

修复方法

要让所有命令在同一个脚本里生效,需要让新启动的x86_64 zsh直接执行cd和yarn start命令,而非启动交互式shell。以下是两种可行方式:

方式1:将命令作为参数传给zsh

修改脚本为:

#!/bin/sh
env /usr/bin/arch -x86_64 /bin/zsh --login -c "cd /Users/tillman/t-root/dev/apps/actual-server && yarn start"

-c参数让zsh执行引号内的命令,执行完成后自动退出新shell。

方式2:使用Here Document( heredoc)

如果命令逻辑复杂,可通过heredoc传递命令给zsh:

#!/bin/sh
env /usr/bin/arch -x86_64 /bin/zsh --login << 'EOF'
cd /Users/tillman/t-root/dev/apps/actual-server
yarn start
EOF

<< 'EOF'表示将后续到EOF的内容作为输入传给zsh执行,单引号可避免原shell解析内部变量。

内容的提问来源于stack exchange,提问作者tjex

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 13:24:52