为什么不直接将命令添加到.bashrc
文件中?然后它将在每次启动新的交互式 shell 时运行。您可以测试$TERM
变量是否包含“xterm”,并以此为条件输出。例如将以下行添加到末尾.bashrc
:
[[ "$TERM" =~ xterm ]] && tuxsay
更新
虽然我认为以上可能仍然是最有用的一般答案,但我注意到了更多的事情:
tuxsay
是一个 bash 别名。bash 别名只能在 bash 本身中理解,但是当您将命令传递给 时xterm -e
,该命令将由 xterm 直接执行,而无需任何 bash 参与。系统将无法找到并执行名为“tuxsay”的文件并且会失败。
如果从 bash 执行,&
角色会将 tuxsay 命令(别名)置于后台,但这在这里并没有真正的帮助。tuxsay 完成后,您需要一个新的 shell 来启动。
小心.bash_aliases
。我注意到在我的基于 Redhat 的系统上放置在此文件中的别名不起作用,因为.bash_aliases
文件不是来源。(我的 Bash 别名不起作用)所以它看起来.bash_aliases
默认来自基于 Ubuntu 的系统,但没有对他人的保证。
考虑到上述情况,如果您绝对希望 tuxsay 在每个 xterm 的基础上运行 - 即您想在 xterm 命令行上指定它 - 您可以执行以下单行:
xterm -e 'cowsay -f tux $(fortune); bash'
这会将复合命令传递cowsay -f tux $(fortune); bash
给 xterm。这个复合命令由两个命令组成:首先做事cowsay
,然后启动 bash。
您也可以将这两个命令放在一个 shell 脚本中,并将 shell-script 传递给 xterm。