17 votos

abastecimiento perfil de bash para los usuarios root

Disculpas de antemano si esta pregunta va a molestar el infierno fuera de todo el mundo como se lo agradezco, se ha pedido en varias formas muchas veces antes. Por favor, estar seguro, he leído los archivos y han intentado por lo menos algunas de las sugerencias, pero todavía no puede resolver la (simple) problema. Esperemos que alguien puede dar una respuesta y puedo sentir adecuadamente humillado. FYI, para evitar cualquier ambigüedad, la voy a usar absolutos en lugar de rutas de acceso relativas.

Cuando me conecto, yo lo hago como usuario adam. Los alias en /Users/adam/.bash_profile son cargados y los puedo usar inmediatamente después de tirar un terminal. Yo no uso el .bashrc archivo, y eso está bien.

Cada ahora y entonces, me cambio a root escribiendo su en el terminal y, a continuación, introducir mi contraseña. El símbolo de los cambios y ahora soy usuario root. Mi pregunta es la siguiente: inmediatamente después de ser root, mi root perfil de bash ser cargados sin mí manual de fuente el archivo de perfil? La razón por la que esto no sucede automáticamente es porque tengo el mismo alias en mi root del archivo de perfil y mi /Users/adam/.bash_profile. Después de convertirse en usuario root, a menos que yo escriba source [root_profile_file], no funcionan. He intentado configurar las siguientes permutaciones y, a continuación, cambiar a root a través de la terminal, pero ninguno de ellos automáticamente origen del perfil/alias (nota, yo no tengo ninguna de las opciones de abajo configurar simultáneamente, así que no creo que me estoy confundiendo el sistema):

Opción 1: poner mi alias en /etc/profile

Opción 2:

  • en /etc/profile, inserte [ -r /etc/bashrc ] && . /etc/bashrc
  • poner mi alias en /etc/bashrc

Opción 3:

  • en /etc/bash_profile, inserte [ -r /etc/bashrc ] && . /etc/bashrc
  • poner mi alias en /etc/bashrc

Opción 4: poner mi alias en /var/root/.profile

Opción 5:

  • en /var/root/.profile, inserte [ -r /var/root/.bashrc ] && . /var/root/.bashrc
  • poner mi alias en /var/root/.bashrc

Opción 6:

  • en /var/root/.bash_profile, inserte [ -r /var/root/.bashrc ] && . /var/root/.bashrc
  • poner mi alias en /var/root/.bashrc

Por favor nota, con cualquier de los de arriba, si me cambio a la root y, a continuación, escriba source root_profile_file el alias están cargados, pero sólo si lo voy a hacer, de hecho, fuente el archivo de forma manual. Tal vez he totalmente incomprendido cómo bash funciona y no es posible origen de un archivo de perfil automáticamente después de cambiar a root pero tengo la esperanza de que hay una solución sencilla. Gracias de antemano a cualquiera que haya tomado el tiempo para leer este mensaje.

14voto

Christopher Scott Puntos 665

El problema que se está encontrando es que cuando ejecute su por sí mismo, usted no está entrando en un 'login' shell. Esto significa que su entorno, directorio de trabajo, y todo excepto el uid/gid siendo el mismo de la original del usuario.

Inicio de sesión de los desencadenadores no se ejecute, y puede experimentar los problemas que usted describe.

Una solución simple a un problema simple:

su -

De la su(1) el hombre de la página:

El su comando se utiliza para convertirse en otro usuario durante una sesión de inicio de sesión. Invoca sin un nombre de usuario, su predeterminados para convertirse en superusuario. El argumento opcional - puede ser utilizado para proporcionar un entorno similar a lo que el usuario espera tenido el usuario conectado directamente.

También:

   -, -l, --login
       Provide an environment similar to what the user would expect had the user logged in directly.

Si usted su a un login shell, bash se comportan como se esperaba, y automáticamente la fuente de los archivos apropiados en "inicio de sesión", sin necesidad de demasiado chapucero soluciones.

9voto

Florian Bidabe Puntos 255

En realidad la root de los usos /bin/sh (antiguo bourne shell), .bash_profile y .bashrc son leídos por bash.

Se hace difícil ya que los archivos pueden usar la funcionalidad no disponibles en sh. Incluso si usted source .bashrc o source .bash_profile, todavía tiene un poco de problema con funciones complejas, por ejemplo.

Una forma de resolver esto es para que se ejecute

sudo dscl . -change /Users/root UserShell /bin/sh /bin/bash

para cambiar root's shell bash.

5voto

Adam V Puntos 2774

Cuando es absolutamente necesario, I sudo bash que me hace root pero con JRobert del medio ambiente. Mi .bashrc contiene:

# Prompt: 'jrobert@JRiMac ~' in green (red, if I'm root), '$' in white
if [[ $UID == 0 ]]; then
   export PS1="\[\e[1;31;40m\]\u@\h \W\[\e[0m\]\$ "
else
   export PS1="\[\e[32;40m\]\u@\h \W\[\e[0m\]\$ "
fi

para hacer el root-símbolo de deslumbramiento a mí en ROJO para enfatizar que estoy ahora (más) vulnerables a mi propia [escoja uno: descaro, la estupidez, la grasa de los dedos de las tendencias, la falta de voluntad para tomar un buen consejo, hasta s.creek - no soltar la paleta].

3voto

Matic Puntos 1

Estoy usando sudo -i para cambiar al usuario root. En este caso, shell se lee la configuración de /var/root/.profile.

1voto

En general, asesoramiento en contra de su como es peligroso, solo busca y usted sabe por qué. En su pregunta, la cuenta de root funciona de la misma manera su cuenta: source ~/.bash_profile y/o ~/.bashrc. No sé de qué, pero mi intuición se inclina hacia ~/.bashrc, así que puede que desee para tratar de poner su alias de allí. He aquí una sugerencia:

su           # type password to get into root account
vi ~/.bashrc # put your aliases there
exit         # exit your root session
su           # try again to see if your aliases works

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by: