tcsh 中的多行 PATH

tcsh 中的多行 PATH

受到已接受答案的启发这个线程,我试图在 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 将pathshell 变量与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>)。

相关内容