loginShell returns the user's login shell.
(u *user.User)
| 287 | |
| 288 | // loginShell returns the user's login shell. |
| 289 | func loginShell(u *user.User) string { |
| 290 | switch runtime.GOOS { |
| 291 | case "darwin": |
| 292 | out, err := exec.Command("dscl", ".", "-read", filepath.Join("/Users", u.Username), "UserShell").Output() |
| 293 | if err == nil { |
| 294 | if s, ok := strings.CutPrefix(string(out), "UserShell: "); ok { |
| 295 | return strings.TrimSpace(s) |
| 296 | } |
| 297 | } |
| 298 | } |
| 299 | if e := os.Getenv("SHELL"); e != "" { |
| 300 | return e |
| 301 | } |
| 302 | return "/bin/sh" |
| 303 | } |
| 304 | |
| 305 | // defaultPath returns the default PATH for the given user. |
| 306 | func defaultPath(u *user.User) string { |