登录后如何在 gnome-terminal 上自动运行命令?

tsh*_*ang 13 login gnome

每次登录后,我都会在 gnome-terminal 的特定选项卡上运行某些命令。这是一个乏味的过程,所以这可以自动完成吗?

Sha*_*off 8

是的,有办法。您需要告诉 gnome-terminal 使用某些配置文件启动选项卡;必须设置这些配置文件以使用您想要的命令启动 shell。

首先,您需要制作一个将启动的脚本(或启动器图标)gnome-terminal --tab-with-profile=Dev。“Dev”是您将创建的配置文件的名称,因此请将其替换为您想要的任何名称。此外,您可以根据需要指定任意数量的--tab-with-profiles:它将为每个打开一个选项卡。

现在,您需要刚刚引用的配置文件。这是通过打开gnome-terminal,然后Edit->Profiles...在菜单中查找来创建的。创建一个新配置文件并为其指定您在上一步中指定的名称。接下来,您需要设置其首选项。突出显示新创建的配置文件并单击编辑按钮。当配置文件首选项对话框出现时,激活“标题和命令”选项卡,选中“运行自定义命令...”并在相关的文本框中输入sh -c "ENV=$HOME/.dev_profile sh". 当然,你可以将 ENV 设置为任何你想要的路径,只要你在下一步中保持一致即可。这将启动 sh,并且 sh 将执行其中的任何命令$HOME/.dev_profile

接下来,您需要创建该 shell 配置文件。所以编辑 $HOME/.dev_profile (或您在上一步中指定的任何文件)。把你想要的任何命令放在那里;它们将在 shell 启动时执行。像对待 .bashrc 一样对待它 - 这将取代它。根据 .bashrc 的设置方式,您可能希望source $HOME/.bashrc在配置文件中从普通 sh 配置文件复制所有功能。

  • 顺便说一句,我强烈推荐 tmux 或 GNU Screen。它们是终端多路复用器,对于这种事情更容易设置,您可以通过 ssh 连接使用它们。唯一的缺点是它们没有供您单击的选项卡,但您可以获得一个窗口或会话的菜单列表,您可以在其中上下导航并切换到一个。它们还有其他花哨的选项,例如分屏、活动/不活动监视器,以及无需连接终端即可保持会话打开的能力。 (3认同)
  • 是的,这比双击标签栏简单得多 (2认同)
  • @Falmarri:实际上是。我很少触摸鼠标,以至于光学传感器会自动关闭,所以我必须摇晃鼠标大约 1.5 秒才能点击任何东西。(更不用说这意味着将我的手从键盘上移开,不得不再次在键盘上找到家的位置。) (2认同)

Gil*_*il' 8

通过--tab-with-profile多次指定该选项,您可以在同一个 gnome-terminal 命令行上启动多个命令,然后每次-e指定在该选项卡中运行的命令。您还可以使用--window-with-profile多个窗口。例如,以下命令启动两个窗口,每个窗口有两个选项卡;第一个窗口在每个选项卡中运行 bash,将环境变量设置TAB为 1 或 2;第二个窗口htop在一个选项卡和iotop另一个选项卡中运行。sh出于某种原因,需要正确引用的显式调用。

gnome-terminal --tab-with-profile="Default" -e 'sh -c '\''export TAB=1; exec bash'\' \
               --tab-with-profile="Default" -e 'sh -c '\''export TAB=2; exec bash'\' \
               --window-with-profile="Default" -e 'htop' \
               --tab-with-profile="Default" -e 'iotop'
Run Code Online (Sandbox Code Playgroud)

如果您希望在登录时运行命令,请将其放入 shell 脚本中(例如~/bin/my_gnome_login_commands,并在 Gnome 菜单的“系统/首选项/启动应用程序”中注册。或者,创建一个~/.config/autostart/my_commands.desktop包含

[Desktop Entry]
Type=Application
Exec=/home/tshepang/bin/my_gnome_login_commands
Hidden=false
NoDisplay=false
X-GNOME-Autostart-enabled=true
Run Code Online (Sandbox Code Playgroud)

(你必须用你家目录的完整路径就Exec=行了,你不能用~.)

(这个答案已经在 Ubuntu 10.04 上用 Gnome 2.30 测试过。由于 Gnome 有时会破坏兼容性,它可能适用于也可能不适用于其他版本。)