将多行变量(tcsh 提示符)分配给另一个变量

将多行变量(tcsh 提示符)分配给另一个变量

对于 tcsh,我有一个多行提示:

set prompt = "%/\\
%n@%m[%h]% "

这会在第一行显示 cwd,然后在第二行显示用户/主机。但是,这样我就无法复制它:

setenv X "$prompt"
Unmatched ".

这对我来说是一个问题,因为当我使用 virtualenv 为 Python 创建虚拟环境时,它会自动创建一个“激活”脚本,作为脚本的一部分,它会保存当前提示符并将其更改为包含虚拟环境环境信息。当调用“deactivate”脚本时,提示将恢复。

有没有办法将多行变量分配给另一个变量?

我想我需要放弃多行提示,因为我认为一旦调用激活脚本,我就会遇到问题,因为我有用于更新提示的别名(我很久以前从某人那里得到了这个) 。从我的 .cshrc 文件:

alias set_prompt 'set prompt = "%/\\
%n@%m[%h]% "'

alias cd 'cd \!*; set_prompt'

set_prompt

有没有更好的方法来做到这一点,以便在移动时更新提示,但我也可以使用激活脚本来更改提示?以下是自动生成的激活脚本的片段供参考:

set _OLD_VIRTUAL_PROMPT="$prompt"

if ("" != "") then
    set env_name = ""
else
    if (`basename "$VIRTUAL_ENV"` == "__") then
        # special case for Aspen magic directories
        # see http://www.zetadev.com/software/aspen/
        set env_name = `basename \`dirname "$VIRTUAL_ENV"\``
    else
        set env_name = `basename "$VIRTUAL_ENV"`
    endif
endif
set prompt = "[$env_name] $prompt"

谢谢。

相关内容