When I do this: xterm -hold -e "ls -lsa | grep libavcodec" I get an xterm-Terminal showing: 156 drwxr-xr-x 11 bernd_b bernd_b 16384 Oct 3 16:52 libavcodec So far, so boring. When I try the same with konsole from the same starting point (always a konsole Terminal intself) doing: konsole --noclose -e "ls -lsa | grep libavcodec" I get a listing of the whole directory. So "|" ist ignored by the -e commandline option? Reproducible: Always Steps to Reproduce: 1.Just shoot the examples given again from a konsole. 2. 3. Expected Results: I would expect the same behaviour as xterm shows (executing the whole -e agument).
Yes you're correct - konsole pulls the first arg as the program and the rest as args
The more underlying problem is konsole currently disagrees with xterm on what a valid command is . xterm supports this, while konsole simple does not: $ xterm -hold -e "cd /tmp; ls -la" Is "cd /tmp; ls -la" a valid command, from the point of view of a *terminal emulator* ? "cd", ";" and "|" are all things only supported and understood by shells. Terminal emulators are not shells, so the only sensible way to "support" that kind of command is pass it to the system() call , effectively calling ' sh -c "cd /tmp; ls -la" '. I guess xterm uses system() as the last resort, but konsole currently simply does not care about that kind of (invalid) "command".
*** Bug 319095 has been marked as a duplicate of this bug. ***