【问题标题】:How do I start multiple screens with custom commands for each one?如何使用每个屏幕的自定义命令启动多个屏幕?
【发布时间】:2014-12-15 19:36:47
【问题描述】:

我想使用 mac/linux 命令屏幕启动多个屏幕,并让每个屏幕执行我的 .bashrc,然后从该 .bashrc 运行一系列别名/函数。我尝试在 .screenrc 中添加各种命令,如下所示:

screen -t first bash
screen -t SE bash
screen -t myserver bash -i --rcfile <(echo "export PS1='> ' && ls") -i
screen -t myserver bash -i
screen -t myserver /Users/user/bin/mybash
screen -t myserver mybash
screen -t myserver ~/bin/mybash
screen -t myserver bash --init-file <(echo "source .bashrc; runapp")
screen -t myserver2 bash --init-file <(echo ". .bashrc; runapp")

但别名不会被执行。我做错了什么?

【问题讨论】:

  • 他们如何“没有按预期工作”?您为什么要为此使用别名/函数而不是外部脚本?
  • 把所有的东西放在你的 ~/.screenrc 中,然后只调用不带参数的屏幕。
  • @EtanReisner,如何让屏幕在启动时调用外部脚本?
  • @glennjackman,所有这些都来自我的 .screenrc。我更新了我的问题。

标签: linux bash macos terminal gnu-screen


【解决方案1】:

好的,下面是如何在屏幕上使用别名。

~$ cat .profile 
shopt -s expand_aliases
alias ping1="ping 8.8.8.8"
alias ping2="ping 8.8.4.4"

~$ cat .screenrc 
screen -t app1 bash -lc ping1
screen -t app2 bash -lc ping2

~$ screen

即使有可能实现它也不是一个好主意。人们出于某种原因避免使用“expand_aliases”。

【讨论】:

  • 如果我将它放在 .screenrc 中,这将不起作用。你知道我需要在 .screenrc 中添加哪一行吗?
  • 我能看到它可能对您不起作用的唯一原因是屏幕在命令完成后立即终止的情况。您的大多数示例都是这种情况-您只是看不到输出-只有“屏幕终止”消息。像 ping 这样的无休止的命令应该可以解决问题。
  • 你是绝对正确的。该命令已执行,但在执行这些命令后屏幕立即退出。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-05-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-11-15
相关资源
最近更新 更多