@MickJT
The 'which' command is only for finding an executable program in the current path, not for what you want here.
To view all of an assign, you can use 'assign libs: exists' or similar. See this and other fine usage information in your sys:documentation/c/assign.doc
Yes it is normal for an assign command with no target to delete the assignment. It is treated as "assign libs: to nothing"
Because assignments are a _list_ of paths to search, when you REMOVE you need to specify which path in the list you want removed.
SYS11:[6]> assign test1: ram:
SYS11:[6]> mkdir test1:subtest
SYS11:[6]> assign test1: test1:subtest add
SYS11:[6]> assign test1: exists
test1 RAM Disk:
+ RAM Disk:subtest
SYS11:[6]> assign test1: ram: remove
SYS11:[6]> assign test1: exists
test1 RAM Disk:subtest
The SDK startup scripts contain assigns, paths, and env var settings. Some of those are system-wide changes and some are for the shell only. So if you run it in one shell, that shell and others opened from it are the only places it is fully active. If it's done in user-startup, that runs in the startup task before it launches 'LoadWB', which means the Workbench inherits all the changes from it, which also means everything else like shells launched later also inherit it all.
Scott Woodall