![为什么我的 .screenrc 只触发 2 个屏幕的打开?](https://linux22.com/image/490382/%E4%B8%BA%E4%BB%80%E4%B9%88%E6%88%91%E7%9A%84%20.screenrc%20%E5%8F%AA%E8%A7%A6%E5%8F%91%202%20%E4%B8%AA%E5%B1%8F%E5%B9%95%E7%9A%84%E6%89%93%E5%BC%80%EF%BC%9F.png)
我的 .screenrc 文件中有以下内容:
# Don't display the copyright page
startup_message off
# keep scrollback n line
defscrollback 5000
# setup some screens
screen -t top 0 top -o cpu -s 5
screen -t mysql 1 mysql -u root -p
screen -t shell_screen 2 cd ~/webroot
screen -t report_gen 3 tail -f ~/webroot/path/report_gen_log.txt
shelltitle "$ |bash"
#change the hardstatus settings to give an window list at the bottom of the
##screen, with the time and date and with the current window highlighted
hardstatus alwayslastline
#hardstatus string '%{= mK}%-Lw%{= KW}%50>%n%f* %t%{= mK}%+Lw%< %{= kG}%-=%D %d %M %Y %c:%s%{-}'
hardstatus string '%{= kG}[ %{G}%H %{g}][%= %{= kw}%?%-Lw%?%{r}(%{W}%n*%f%t%?(%u)%?%{r})%{w}%?%+Lw%?%?%= %{g}][%{B} %d/%m %{W}%c %{g}]'
当我启动屏幕时,仅创建前两个屏幕。
可能出了什么问题?
我正在运行 OSX,但我不认为这很重要。
答案1
Kyle 是对的——screen 窗口 2 将会失败,因为 cd 是 shell 内置命令。即使它是一个命令,它也会立即终止,screen 会关闭该窗口。
你可以做这样的事情来让它工作:
screen -t shell_screen 2 bash -c "cd ~/webroot && bash"
tail 命令(窗口 3)因“~”字符而失败。Screen 不进行 shell 样式的扩展,因此 tail 立即失败(无法打开文件)并终止,screen 窗口关闭。手动将该 ~ 扩展为主目录的完整路径,screen 应该可以正常工作。
答案2
不确定为什么尾部会失败,但是 cd 是 shell 内置命令,而不是命令,因此您应该在窗口 2 中得到没有这样的命令。