Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit3005cb4

Browse files
authored
feat(agent): set additional login vars, LOGNAME and SHELL (#16874)
This change stes additional env vars. This is useful for programs thatassume their presence (for instance, Zed remote relies on SHELL).See `man login`.
1 parent86b61ef commit3005cb4

File tree

2 files changed

+51
-0
lines changed

2 files changed

+51
-0
lines changed

‎agent/agent_test.go

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@ import (
5151
"github.com/coder/coder/v2/agent/agentssh"
5252
"github.com/coder/coder/v2/agent/agenttest"
5353
"github.com/coder/coder/v2/agent/proto"
54+
"github.com/coder/coder/v2/agent/usershell"
5455
"github.com/coder/coder/v2/codersdk"
5556
"github.com/coder/coder/v2/codersdk/agentsdk"
5657
"github.com/coder/coder/v2/codersdk/workspacesdk"
@@ -1193,6 +1194,53 @@ func TestAgent_SSHConnectionEnvVars(t *testing.T) {
11931194
}
11941195
}
11951196

1197+
funcTestAgent_SSHConnectionLoginVars(t*testing.T) {
1198+
t.Parallel()
1199+
1200+
envInfo:= usershell.SystemEnvInfo{}
1201+
u,err:=envInfo.User()
1202+
require.NoError(t,err,"get current user")
1203+
shell,err:=envInfo.Shell(u.Username)
1204+
require.NoError(t,err,"get current shell")
1205+
1206+
tests:= []struct {
1207+
keystring
1208+
wantstring
1209+
}{
1210+
{
1211+
key:"USER",
1212+
want:u.Username,
1213+
},
1214+
{
1215+
key:"LOGNAME",
1216+
want:u.Username,
1217+
},
1218+
{
1219+
key:"HOME",
1220+
want:u.HomeDir,
1221+
},
1222+
{
1223+
key:"SHELL",
1224+
want:shell,
1225+
},
1226+
}
1227+
for_,tt:=rangetests {
1228+
tt:=tt
1229+
t.Run(tt.key,func(t*testing.T) {
1230+
t.Parallel()
1231+
1232+
session:=setupSSHSession(t, agentsdk.Manifest{}, codersdk.ServiceBannerConfig{},nil)
1233+
command:="sh -c 'echo $"+tt.key+"'"
1234+
ifruntime.GOOS=="windows" {
1235+
command="cmd.exe /c echo %"+tt.key+"%"
1236+
}
1237+
output,err:=session.Output(command)
1238+
require.NoError(t,err)
1239+
require.Equal(t,tt.want,strings.TrimSpace(string(output)))
1240+
})
1241+
}
1242+
}
1243+
11961244
funcTestAgent_Metadata(t*testing.T) {
11971245
t.Parallel()
11981246

‎agent/agentssh/agentssh.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -900,7 +900,10 @@ func (s *Server) CreateCommand(ctx context.Context, script string, env []string,
900900
cmd.Dir=homedir
901901
}
902902
cmd.Env=append(ei.Environ(),env...)
903+
// Set login variables (see `man login`).
903904
cmd.Env=append(cmd.Env,fmt.Sprintf("USER=%s",username))
905+
cmd.Env=append(cmd.Env,fmt.Sprintf("LOGNAME=%s",username))
906+
cmd.Env=append(cmd.Env,fmt.Sprintf("SHELL=%s",shell))
904907

905908
// Set SSH connection environment variables (these are also set by OpenSSH
906909
// and thus expected to be present by SSH clients). Since the agent does

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp