受到已接受答案的启发这个线程,我试图在 tcsh(版本 6.14.00)中复制类似的结构,但没有成功:
setenv new_PATH (
/some/path
/some/other/path
# Some comments
/foo/path
# Another group
/bar/path
$PATH) # Attach $PATH at the end in case we had previous declarations
setenv PATH `sed -e '/^#/'d -e '/^$/'d << EOF | paste -d ":" -s $new_PATH`
我收到错误“ Too many ('s
”。我究竟做错了什么?
答案1
你可以这样做:
set path = ( \
/this/dir \
\
# This is a comment \
\
/that/dir \
/another/dir \
)
另一种方法是从文件中读取目录名称:
set path = ()
foreach dir (`/bin/cat path.txt`)
set path = ( $path $dir )
end
请注意,我需要指定,/bin/cat
因为我刚刚破坏了我的$PATH
.
您可以替换cat
为过滤掉注释的内容(例如简单的sed
——或者更确切地说/bin/sed
——命令)。
这会对包含空格或其他有趣字符的目录路径产生问题,但无论如何您都应该尽量避免这些问题。
答案2
setenv
设置环境变量,并且它们不能是数组。setenv
具有普通命令的语法。
该set
命令可以将 shell 变量设置为数组。您需要将所有元素放在同一行上。
set new_PATH = ( /some/path /some/other/path … )
Tcsh 将path
shell 变量与PATH
环境变量同步,因此您无需手动执行此操作。
set new_PATH = ( /some/path /some/other/path … )
set new_PATH = ( $new_PATH /more )
set path = $new_PATH
或直接
set path = ( /some/path /some/other/path … )
答案3
tcsh 定义 PATH 的环境变量,如下所示:
setenv PATH /path
并像这样添加到变量中:
set PATH ($PATH /add/path/here /another/here)
如果将环境变量传递给其自身,那么您只需将其添加到当前设置的位置即可。
从查看设置环境变量的容易程度来看。没有剧本的理由。它是一设置变量的命令。
OP 注意:您是最后一行设置变量应该设置set PATH ($PATH <then issue sed>
)。