"mp" <[EMAIL PROTECTED]> wrote: >i have a python program which attempts to call 'cls' but fails: > >sh: line 1: cls: command not found
Hmmmmm... (I don't program in Python, so precisely what is happening isn't something I'm sure about). But, note how that line starts with "sh:"! That indicates it is /bin/sh which is reporting an inability to find a "cls" command. It suggests that Python (like most other programming languages) calls shell scripts using /bin/sh as the default shell. The problem is that unix has no command named "cls". >i tried creating an alias from cls to clear in .profile, .cshrc, and >/etc/profile, but none of these options seem to work. In /etc/profile and ~/.profile you will cause an alias to be defined *for* *interactive* *login* *shells*. But not for non-interactive non-login shells, which is what you are invoking with Python. The reason is because aliases are not inherited by sub-shells, and only interactive login shells read those two files. Hence your alias is never defined in the subshell your program executes. >my conclusion is that a python program that is executing does not use >the shell (because it does not recognize shell aliases). is this >correct? No. >should i use a symbolic link? if so, where should i place it? No. >what is the difference between aliases and symbolic links? Aliases are a mechanism used by a shell to define a command name that executes a series of commands. A symbolic link is a directory entry that de-references another directory entry, so that either entry points to the same actual file. >if i execute a command like 'clear' to clear the screen, where does the >shell look to find the command 'clear'? It looks in locations specified by the PATH variable. By default that will be a minimal list defined by the login program, but it might be significantly added to in the /etc/profile or other shell init scripts. The question you need to answer first is what happens if your Python program tries to execute /clear/ rather than /cls/. If that works, then your PATH variable is set correctly. If it doesn't work, verify that there is in fact a program named /clear/ that can be run from a shell command line. Then figure out how to set an appropriate PATH variable for your Python program. Note that if /clear/ does work, but you want this script to use /cls/ so that it is portable to some silly OS where a /cls/ exists... You can define a shell function (which will be inherited by sub-shells) to look like this, function cls () { clear; } And place it where ever is appropriate (/etc/profile is one place). >i'm using os x. I don't know anything about it... :-) -- Floyd L. Davidson <http://www.apaflo.com/floyd_davidson> Ukpeagvik (Barrow, Alaska) [EMAIL PROTECTED] -- http://mail.python.org/mailman/listinfo/python-list