A common situation is the desire to install a new A-Shell executable, but you have several people still running the old one. The question is:
Can you install a new version of the A-Shell executable without first getting all the old users to log out?
The answer is yes; you can install the new version of the A-Shell executable while users are still running the old version without much difficulty at all.
Unlike Windows, which identifies program modules by their file or module name, under Unix, program modules are identified by the inode (numeric id associated with the directory entry). So, even though all users will typically share a single copy of the "code" part of the A-Shell executable in memory, since it is identified by the inode and not the name, we can introduce a new version of the same executable without disturbing the existing version on disk or in memory.
The cleanest procedure is to rename the existing A-Shell executable. I recommend renaming it to ashell_xxxx where xxxx is the edit number; this makes it easy to go back to the old version for testing or if you change your mind. Then copy the new A-Shell executable into the normal bin directory.
As soon as you complete the step above, any new user launching A-Shell will get the new copy, and since the new copy has a different inode than the original, the new copy will be loaded, and then shared by all subsequent users, such that it is completely independent of the old copy.
The above all assumes that the two versions are "close enough" to each other that they don't create compatibility issues between them. In general, as long as you are on the same major and minor version (5.0 or 5.1), there should be no problem.
Of course you may still end up introducing confusion if the purpose of the update was to fix some bug, or to enable some new feature in your application, since it will be difficult to tell from the outside which user is running which copy. You can get a pretty good idea though by using the SYSTAT/W switch (wide mode, which shows how long the job has been logged in). If you note the time when you did the switch, and can do time clock arithmetic in your head, you can probably figure out which users are running which version. (This also points out one of the various reasons why it's good practice to not leave idle jobs logged in indefinitely.) Note that if you want to kill users, you can use KILL.LIT, or perhaps send them a message with SEND.LIT.
It's easy to tell from inside an application which version of A-Shell you're running, using one of the subroutines which returns the version, such as MX_GETVER. Whenever you incorporate a newly introduced A-Shell feature into your application, it is good practice to check the version in the application before trying to use the feature, perhaps warning the user to update or avoiding the feature if the version is too old.