对于相同的 unix 或 linux 用户,不同的环境变量集

noz*_*ica 5 shell tcsh alias key-authentication environment-variables

我正在使用tcsh, 并且对于特定项目,我团队的每个成员都连接到具有相同用户的服务器。(这是我们无法改变的)。

出现这种情况是因为我想要一些自定义环境变量和别名,为此我有自己的 .tcshrc 文件(即.tcshrc_cust),我在连接到该机器时将其作为第一个操作加载:

source .tcshrc_cust
Run Code Online (Sandbox Code Playgroud)

尽管这很有效,但我在使用时遇到了一个问题vim:如果我从 vim 内部进入 shell(使用:sh),我会陷入一个普通的 shell,没有我的自定义 env。变量。和别名。

除了在该机器中使用不同的用户之外,是否有解决方案?


解决方案(由@Shawn 提供):

我在我的密钥前.ssh/authorized_keys加上:

command="setenv subuser noz; tcsh"
Run Code Online (Sandbox Code Playgroud)

并在.tcshrc文件末尾写下这些行:

if ($?subuser) then
    source .tcshrc_$subuser;
endif
Run Code Online (Sandbox Code Playgroud)

现在一切正常。

Sha*_*off 4

您可以.tcshrc检查特殊的环境变量(如subuser),并有条件地进行检查source .tcshrc_cust。当您登录时,运行subuser=nozimica tcsh. 它将获取该环境变量并执行您的自定义 rc 脚本。另外vim的:sh命令就可以了。你甚至可以让它变得更奇特,并且source .tcshrc_$subuser;这样每个人都可以做到。

subuser=nozimica tcsh您可以通过让 ssh 为您运行来跳过登录时运行的部分。如果您设置了 ssh 密钥身份验证,那么在~/.ssh/authorized_keys服务器上,您可以在密钥前加上 前缀command="subuser=nozimica tcsh",然后 ssh 将为您运行该命令。