我试图让我的早晨启动过程自动化。通常我会启动多个正在运行的脚本,我将退出(使用 ctrl + c )并根据需要手动重启。
所以我想创建一个
的bash脚本gnome-terminal
目前我有,
#!/bin/bash
gnome-terminal \
--tab -t "Server" -e "bash -ic \"cd ~/Dev/server; npm start; exec zsh\"" \
--tab -t "Framework" -e "bash -ic \"cd ~/Dev/framework; npm start; exec zsh\"" \
--tab -t "Client" -e "bash -ic \"cd ~/Dev/client; npm start; exec zsh\"" \
--tab -t "Admin" -e "bash -ic \"cd ~/Dev/admin;npm start; exec zsh\""
此解决方案的问题是标签可能会或可能不会跳回zsh。有时3个标签,有时一个。理想情况下,我希望所有4回到zsh。
如果有人能帮助我解决这个问题,我将不胜感激。
答案 0 :(得分:0)
你可以将gnome-terminal
排除在等式之外,它仍然无法工作:
bash -ic "npm start; bash"
按Control-C,您将无法获得shell。对于bash
,我们可以使用--rcfile
选项解决此问题:
bash --rcfile <(echo "npm start")
这样我们就不会阅读真实的.bashrc
,所以既然我们可能想要阅读它,请稍微修改一下:
bash --rcfile <(echo ". ~/.bashrc; npm start")
另一方面,对于zsh,它不能使用等效的(?)--rcs
选项,但是在使用ZDOTDIR
变量启动时也是如此。因此,我们为.zshrc
,~/Dev/server
,~/Dev/framework
,~/Dev/client
中的每一个创建~/Dev/admin
,其中包含以下内容:
首先:
. ~/.zshrc
cd ~/Dev/server
npm start
第二
. ~/.zshrc
cd `~/Dev/framework`
npm start
等
您的gnome-terminal
命令将如下所示:
gnome-terminal \
--tab "Server" -e "sh -c 'ZDOTDIR=/path/to/directory/containing/first/.zshrc'" \
--tab "Framework" -e "sh -c 'ZDOTDIR=/path/to/directory/containing/second/.zshrc'"
# etc