![Linux 中 $path 变量中的目录路径中有空格](https://linux22.com/image/1218087/Linux%20%E4%B8%AD%20%24path%20%E5%8F%98%E9%87%8F%E4%B8%AD%E7%9A%84%E7%9B%AE%E5%BD%95%E8%B7%AF%E5%BE%84%E4%B8%AD%E6%9C%89%E7%A9%BA%E6%A0%BC.png)
我正在使用 Red Hat Enterprise 5.3,并尝试将目录添加到 $path 变量,但其中有空格。$path 变量以空格分隔,那么如何区分绝对路径中的空格和分隔路径的空格?
答案1
$PATH 不是用冒号分隔的吗?无论如何,您需要使用 转义空格\
。如果您想要一个名为 的目录my dir
,您可以执行以下操作:
PATH=/bin /usr/bin /home/user/my\ dir /sbin
此路径仅作为示例,请勿逐字复制。
答案2
看起来 Brad 使用的是 csh 或 tcsh——这些 shell 都有 $path 和 $PATH。当您更改其中一个时,shell 会保留这两个。
将带空格的目录添加到$path的方法:
% echo $path
/opt/local/bin /opt/local/sbin /usr/local/bin /usr/local/sbin /Users/dharris/bin
% echo $PATH
/opt/local/bin:/opt/local/sbin:/usr/local/bin:/usr/local/sbin:/Users/dharris/bin
% set path = ($path /tmp/directory\ with\ spaces)
% echo $path
/opt/local/bin /opt/local/sbin /usr/local/bin /usr/local/sbin /Users/dharris/bin /tmp/directory with spaces
% echo $PATH
/opt/local/bin:/opt/local/sbin:/usr/local/bin:/usr/local/sbin:/Users/dharris/bin:/tmp/directory with spaces
答案3
就我的情况(使用 csh)而言,$PATH 变量弄乱了它并阻止了 $path 工作,因此这里有一个解决方法:
set savePATH = $PATH
set path = ($path /usr/my\ dir/has\ spaces\ in\ it)
set PATH = ($savePATH)
警告:带有空格的路径必须最后添加,如果在此之后向路径添加非空格路径,它将自动更新 $PATH 并再次破坏它。