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)
现在一切正常。
您可以.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 将为您运行该命令。