¿Es posible redefinir el directorio de inicio? por ejemplo, en /ext1/username
lugar de /home/username
, es decir, expandir ~
a otro directorio (en lugar de cambiar el directorio de inicio real donde se encuentran los archivos de inicio de los usuarios).
(Esta pregunta es principalmente académica, ya que parece una mala práctica hacerlo. Tampoco tengo otra opción en cuanto al uso csh
, a pesar de haber leído el Top 10).
~
a algo diferente al directorio de inicio real?~
a otro directorio (no, si entiendo su alternativa correctamente, cambiar dónde se ubicarán los directorios principales de todos los usuarios). No me di cuenta de que~
se interpretaba como una forma breve de$HOME
, como @michas describió en su respuesta.Respuestas:
La tilde
~
es interpretada por su caparazón. Su shell interpretará~
como una forma corta de$HOME
.Tratar
(echo ~; HOME=foo; echo ~)
. Primero debe imprimir su directorio de inicio real y luego "foo", como lo configuró$HOME
.El valor predeterminado de
$HOME
proviene de la configuración de su sistema. Usegetent passwd
para enumerar todos los usuarios conocidos y sus directorios de inicio. Dependiendo de la configuración de su sistema, esas entradas pueden provenir de/etc/passwd
cualquier servicio de directorio remoto.Si solo desea redefinir temporalmente su directorio de inicio, simplemente configure otro
$HOME
.Si desea cambiarlo permanentemente, debe cambiar la entrada passwd, por ejemplo, editando manualmente
/etc/passwd
.fuente
csh
la variable relevante es$home
(minúscula), y nosetenv HOME /ext1/acheong
puedesset home=/ext1/acheong
, solo puedes , y eso funcionó para mí)usermod -d
vipw
(o cualquier GUI que le proporcione su sistema operativo) en lugar de editar/etc/passwd
directamente. La edición directa corre el riesgo de corromper el archivo, que puede ser difícil de recuperar.El valor que se utiliza
~
se determina a partir del valor que obtiene de la base de datos administrativa (getent passwd
), generalmente en el/etc/passwd
archivo, para el directorio de inicio de cada usuario que se define allí.La sexta columna de este archivo es de donde
cd ~
proviene el valor utilizado cuando alguien escribe .nsswitch
Puede ver qué usaría un sistema para el directorio de inicio del usuario con el comando
getent passwd
:La "base de datos" que los proporciona se controla a través de su sistema de resolución, definido en
/etc/nsswitch.conf
.Los archivos anteriores significan
/etc/passwd
, pero la "base de datos" podría provenir de LDAP, NIS u otras ubicaciones en la red, por ejemplo.¿Mudarse / redefinir?
Realizar esta operación es un poco complicado después de crear las cuentas. Si está creando cuentas desde cero, es trivial redefinir la ubicación de un usuario de su directorio de inicio. Al ejecutar el
useradd
comando, puede especificar la ubicación que se utilizará para el directorio de inicio de un usuario.Ejemplo
extracto de la página man
Para cuentas existentes?
Esto se convierte más en una operación quirúrgica ya que muchas veces la ruta del directorio de inicio de un usuario se incluye estáticamente en los archivos de configuración, lo que lo hace más complicado.
Ejemplo
Será necesario corregirlos o deberá proporcionar un enlace desde
/home/sam
la nueva ubicación/ext1/sam
.Moverse cuando la "base de datos" no está
/etc/passwd
Si el sistema obtiene los directorios de inicio de LDAP, NIS, etc., deberá realizar la reubicación en esos sistemas y coordinar con el traslado de los archivos
/home/sam
a/ext1/sam
.Referencias
fuente
Si la razón es distribuir usuarios en múltiples sistemas de archivos, también puede usar el
automounter
. E incluso le permite tener un directorio "base" diferente para sus usuarios.fuente