如何在xterm启动时运行一个命令?

7
如何在xterm启动时运行命令,即在启动xterm终端时已经执行命令?
我已经编辑了.bashrc文件,并添加了以下一行:
xterm“ls”
但是这并不起作用。
请建议我应该怎么做才能实现这一点。
谢谢。
2个回答

6
根据手册,~/.bashrc 用于交互式shell。xterm运行一个shell,因此可能会导致"不起作用"的连锁反应。

xterm程序设置了这些环境变量,对于脚本编写非常有用:XTERM_VERSIONXTERM_SHELL。在你的~/.bashrc文件中,您可以使用前者只运行xterm -ls一次:

if [[ -z "$XTERM_VERSION" ]]
then
    xterm -hold -e ls &
fi

看起来您需要的是:

  • 如果不是从现有的xterm运行,它将运行一个xterm
  • ls完成时,它会防止xterm关闭。

在Shell启动时展示ls的更有用的方法是在每个启动的Shell中运行ls(对于这种情况,您不需要运行单独的xterm)。同样,您可以使用环境变量来实现这一点一次(以防您运行bash来创建子shell):

if [[ -z "$XTERM_ONCE" ]]
then
    export XTERM_ONCE=$(date)
    ls
fi

xterm 自 2005 年起已设置此功能 - 可参见 (版本更改记录)[http://invisible-island.net/xterm/xterm.log.html#xterm_202]。 - Thomas Dickey

2
我使用这个:
-e /bin/bash -login

-e command [arguments]

在 rxvt 窗口中运行带有命令行参数的命令;如果命令行上没有给出 -title (-T) 或者 -n,它也会设置窗口标题和图标名称为正在执行程序文件名的基础名称。如果使用此选项,则必须将其放在命令行的最后。如果没有 -e 选项,则默认运行 SHELL 环境变量指定的程序,若没有指定则运行 sh(1)。

http://linux.die.net/man/1/rxvt


你在哪里输入这个命令 -e /bin/bash -login?我的意思是说在哪个文件中? - user189942
这些显然是用于“xterm”或“rxvt”调用的命令行参数。如果您不从命令行提示符启动“xterm”(在这种情况下,在许多环境中,您已经运行了一个“xterm”实例!),则似乎没有那么有用。 - tripleee
xterm -e /bin/sh -c "hello -g Example" 对我有用 :) - TheTechRobo the Nerd

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接