Spaces in Csh Paths

Spaces in Csh Paths

am 18.04.2008 05:33:10 von rodney.longhurst

Is it possible to safely maintain directory names with spaces in a csh
path? This works;

set path = ( /bin /home/space\ bin )

However if a later script tries to add to it;

set path = ( $path /usr/bin )

then the real escaped space is lost, since the set command expands the
$path variable (which is an array) into a flat space-separated string,
then reconstructs it into an array. I know the env variable $PATH,
which is colon-separated, could be used instead (since the csh keeps
$path and $PATH in sync);

setenv PATH "/bin:/home/space\ bin"
setenv PATH "${PATH}:/usr/bin"

but this just shifts the problem to directory names that contain
colons (admittedly much less likely).

Is there a reliable way to set the path to ensure the current contents
are never mangled, or is this just a limitation of the csh?

Re: Spaces in Csh Paths

am 18.04.2008 12:52:38 von Maxwell Lol

rodney.longhurst@gmail.com writes:

> Is it possible to safely maintain directory names with spaces in a csh
> path? This works;
>
> set path = ( /bin /home/space\ bin )
>
> However if a later script tries to add to it;
>
> set path = ( $path /usr/bin )

You probably need to use
set path = ( $path:q /usr/bin )

> Is there a reliable way to set the path to ensure the current contents
> are never mangled, or is this just a limitation of the csh?

It's one of many... :-)

Re: Spaces in Csh Paths

am 20.04.2008 15:56:11 von rodney.longhurst

Maxwell Lol wrote:

> You probably need to use
> setpath= ( $path:q /usr/bin )

Yep, that works perfectly. Thanks very much.