为什么我的 .screenrc 只触发 2 个屏幕的打开?

为什么我的 .screenrc 只触发 2 个屏幕的打开?

我的 .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 中得到没有这样的命令。

相关内容