我最近改用zsh进行日常使用。我遇到的一个问题是我如何自动启动一些后台命令行可执行文件(例如,fetchmail -d 1800
)。当我将行添加到~/.zprofile
或~/.zshrc
时,一切正常,直到我打开另一个zsh流程实例(事实上,我使用tmux
所以它经常发生),fetchmail抱怨< / p>
fetchmail: can't accept options while a background fetchmail is running.
我认为~/.zprofile
可能只执行一次,但似乎我错了。那么我该如何正确处理呢?
感谢。
答案 0 :(得分:2)
编辑:比原创想法更好(来自下面的评论):
ps -C fetchmail >/dev/null || fetchmail -d 1800
修正了原创想法:
检查后台中是否有正在运行的进程并且仅在不运行时才运行fetchmail
:
[ -z `ps aux | grep "fetchmail" | grep -v "grep"` ] && fetchmail -d 1800
答案 1 :(得分:2)
为什么需要在zsh配置文件中启动它?所有或几乎所有窗口管理器和桌面环境都支持在启动时运行命令。例如,使用fluxbox时,您只需将此启动行添加到$HOME/.fluxbox/startup
。
注意:每次有人启动登录shell时都会读取.zprofile
。每次有人启动交互式shell时都会读取.zshrc
。每当有人启动一个shell(无论哪个)时,都会读取.zshenv
。 (除非被命令行参数明确禁用。)实际上没有配置文件只读一次。