Com o seu exemplo, usando a opção -e
, então xterm
inicia um shell, o manual informa isso.
É possível sobrescrever a busca padrão do xterm por um shell, então você pode fornecer seu próprio programa para isso, mas quando você sobrescreve o shell, você não pode usar a opção -e. Quando você sobrescreve o shell, o seu shell é executado ( fork() + exec()
) diretamente pelo xterm.
Aqui estão as seções relevantes,
One parameter (after all options) may be given. That overrides xterm's built-in choice of
shell program. Normally xterm checks the SHELL variable. If that is not set, xterm tries
to use the shell program specified in the password file. If that is not set, xterm uses
/bin/sh. If the parameter is not a relative path, i.e., beginning with “./” or “../”, xterm
looks for the file in the user's PATH. In either case, it constructs an absolute path. The
-e option cannot be used with this parameter since it uses all parameters following the
option.
e
-e program [ arguments ... ]
This option specifies the program (and its command line arguments) to be run in the
xterm window. It also sets the window title and icon name to be the basename of the
program being executed if neither -T nor -n are given on the command line. This
must be the last option on the command line.
E apenas observando o que você está executando,
"echo hello; sleep 5"
É o shell que analisa essa string, usa a variável PATH
env para encontrar os dois comandos e percebe que são de fato dois comandos separados com o ponto e vírgula, xterm
não faz isso!