Differences with other interpreters

While qsh is compatible with other standard shell interpreters, there are several differences.

  • There is no support for the <> redirection operator.
  • There is no support for a command history list, the HISTSIZE and HISTFILE variables, or the fc (or hist) built-in utility. As an alternative, the QSH CL command has support for command retrieval.
  • There is no support for command line editing and the EDITOR variable.
  • There is no support for the MAIL, MAILCHECK, and MAILPATH variables.
  • There is no support for job control. There is no concept of a foreground or background process group on i5/OS. This means it is possible for multiple jobs to be reading from the terminal at the same time. qsh does not support:
    • The fg or bg built-in utilities.
    • Using the Suspend key (typically <ctrl>z) to send the SIGTSTP signal to the foreground process group.
    • Using the Stop key (typically <ctrl>s) to send the SIGSTOP signal to the foreground process group.
    • Using the Restart key (typically <ctrl>q) to send the SIGCONT signal to the foreground process group.
    • Using the Interrupt key (typically <ctrl>c) to send the SIGINT signal to the foreground process group. As an alternative, you can use SysReq 2 from an interactive shell session to send the SIGINT signal to the shell interpreter process and any currently running child processes.
  • There is no support for the End-of-file key (typically <ctrl>d). As an alternative, use a here-document to redirect text entered at the command line to standard input of a utility.
  • When calling a program, there is a limit to the maximum number of parameters you can pass to the command. If the program was built for a release before V5R3, the limit is 255 parameters. If the program was built for V5R3 or a subsequent release, the limit is 65535 parameters.
  • When using path name expansion with some case insensitive file systems, you must use upper case characters in the pattern. For example, to list all of the program objects in the QSHELL library you should use this command:
    
    ls /qsys.lib/qshell.lib/*.PGM.