打开一个新的终端选项卡并在其中运行命令,仅在打开选项卡之后

Luc*_*ade 5 linux shell terminal tabs ruby-on-rails

我正在尝试创建一个脚本来在我的 Rails 项目中打开一个新选项卡并rails s在该选项卡内运行,以启动我的服务器。

我的命令:

xfce4-terminal --tab --title="rails server" --working-directory="Documents/projects/rails_blog" --command="bash -c 'rails s';bash"
Run Code Online (Sandbox Code Playgroud)

新选项卡将在正确的目录中打开。
但我总是收到这个错误:
bash: rails: command not found

我认为它rails s是在打开新选项卡之前运行的

--command标记仅期望 bash 命令。我不知道

这是为什么?我该如何解决这个问题?

我已经尝试了下面的所有答案:
从超级用户stackoverflow - 使用来自 Ask ubuntu的 stackexchange
的命令行在 gnome-terminal 中打开一个新选项卡- 打开带有多个选项卡的终端并从 Ask ubuntu 执行应用程序 - 如何在不同的文件夹中打开多个终端选项卡(工作目录)?


小智 10

以下技术适用于较新的 gnome-terminal。

(1) 这将打开一个新的终端窗口并执行“ls”并使终端窗口保持打开状态

gnome-terminal --title=newWindow \\
               -- bash -c "ls; bash"
Run Code Online (Sandbox Code Playgroud)

(2) 这将在当前 gnome 终端中打开一个新选项卡,并在该选项卡中执行“ls”。

gnome-terminal --tab --title=newTab \\
               -- bash -c "ls ;bash"
Run Code Online (Sandbox Code Playgroud)

上述技术适用于 使用 VTE 0.52.2 +GNUTLS -PCRE2 的 GNOME Terminal 3.28.2 请注意,旧的 gnome-terminal 选项 -e --command 和 -x 在未来版本中将被弃用。

打开 gnome-terminal 后执行命令的首选方法是在最后一个空 -- 选项之后执行命令。在上面的示例中,我们执行 bash 命令,该命令又接受在该 shell 中执行的一组命令。第一个选项中需要尾随 bash,否则窗口/选项卡将关闭。

希望这可以帮助。


Aus*_*tio 0

我为此使用tmuxinator 。您可以将其放入主管中,然后运行tmuxinator start project,它会在 tmux 中为您启动会话。

# ~/.tmuxinator/project.yml

name: project
root: ~/projects/some_path

windows:
  - server: bundle && bundle exec rake db:migrate && rails s
Run Code Online (Sandbox Code Playgroud)