Me gustaría crear un alias que haga algo como esto:
alias userYYY='sudo su userYYY; cd /a/path/that/only/userYYY/has/access'
Entonces, desde mi línea de comando, inicié sesión con un usuario de sudo y me gustaría escribir el alias userYYYpara que mi shell ahora esté registrado userYYYy lo pwdesté /a/path/that/only/userYYY/has/access.
¿Cómo puedo hacer eso? Esto userYYYes para ejecutar algunos procesos, y debe haber algo en su hogar. Por lo tanto, intenté cambiar su $ HOME usando:
sudo usermod -m -d /a/path/that/only/userYYY/has/access userYYY
Y luego desde mi shell con mi archivo sudoer lo hice sudo su userYYY. Pero eso no funcionó. Lo único que funcionó fue sudo su -l userYYYYpero eso abrió una nueva fiesta dentro de mi shell original ( -bash-4.1$ ....).
En resumen, lo que quiero es simplemente evitar tener que escribir 2 líneas en mi shell:
sudo su userYYY
cd /a/path/that/only/userYYY/has/access
¿Algunas ideas?

bash: cannot set terminal process group (13964): Inappropriate ioctl for device\nbash: no job control in this shell.bashrcarchivosudo,cddonde tener 2 líneas separadas no funcionaba.Una opción sería editar
~/.bashrcel usuario objetivo y agregarcdallí:fuente
Respuesta corta: no puedes. El
sudo sucomienza un nuevo shell que debe salir antes de que llegue a lacdorden.fuente
Para mí, una combinación de
sudoyscreenfuncionó:Este comando primero cambia al
vagrantusuario. Luego, comovagrantcambia el directorio/vagranty se ejecutanpm install.fuente
Sé que esto es ligeramente diferente a la pregunta original, pero la idea es ejecutar el comando como un usuario diferente sin tener que escribir una contraseña cuando la política lo prohíba
sudo su <user> -c.fuente