Chris
Chris

Reputation: 221

Argument list too long for UGE compute host

In my .profile (SUSE Linux with Korn shell) I have had the following code active for many years:-

case $0 in
-ksh|ksh)
    set -o ignoreeof
    set -a
    set -o vi
    PS1=$(print '\033[34m$(tput bold)ksh:$(hostname)->$(tput sgr0)\033[00m ')
    PS2="continue-> "
    PS3=": "
    PS4="$0.$LINENO+ "
    FCEDIT=/usr/bin/vi
    HISTFILE=~/.histories/${TTY}_$(hostname)_ksh_his
    HISTSIZE=500
    EDITOR=/bin/vi
    VISUAL=/bin/vi
    TERM=gnome
    set +a ;;
*) SHELL=${SHELL} ;;

But lately that PS1 entry has been causing some unexpected problems. When I source a file of ~3K environment variables and then try to get onto to a UGE compute host, the following error causes everything to break down:-

$ qrsh -V -j y -pe mt 1 -l "os_version=SUSE12.0,model=EMT3500,cpu_code=E5-2667v4" -P iheavy -now no
ksh: /usr/bin/tput: Argument list too long
ksh: /bin/hostname: Argument list too long
ksh: /usr/bin/tput: Argument list too long
ksh:->

If I request a CentOS system (os_version=CS7.0) I do not see the error--it is specific to SUSE. Also, if I eliminate the PS1 entry altogether, I can get onto a SUSE system without any errors. This is the simplest way to capture the bigger problem: when I issue a qsub for batch computing tasks, my .profile ends up partially initialized and jobs fail to launch.

I often change environments and shells, so color-coding my terminal prompt in a shell-specific and host/queue-specific way has always been helpful. I would rather not retire that PS1 entry just for one project that has such a long list of environment variable names.

I have done various searches and learned that increasing ulimit settings can sometimes help in situations like this; however, I tried that (increased stack size and number-of-open-files to their maximum) and the outcome did not change.

Is there a practical way to avoid this problem without removing the PS1 entry?

Upvotes: 1

Views: 134

Answers (0)

Related Questions