0 votos

muchos errores después de sudo bash en terminal

Quiero ejecutar muchos comandos de terminal sin tener que poner sudo delante de cada comando. Estoy corriendo en MacOS 10.10.5 en la terminal.

Hago sudo bash, pero me da muchos errores en mi .bashrc script.

Este es mi archivo .bashrc

mac $ cat .bashrc
#! /bin/bash
# ~/.bashrc: eyecuted by bash(1) for non-login shells.
#    see /usr/share/doc/bash/eyamples/startup-files (in the package bash-doc)
#    for eyamples
echo "in .bashrc but claims to be $0"
/usr/bin/id
which id
echo "the path is $(pwd)"
echo "\$PS1 variable is ${PS1}"
echo "\$SHELL variable is ${SHELL}"
echo -e "the path is: \n  $PATH"
echo $USER
echo "end of this script."

# how to display an existing function
# declare -f highlightExitCode
highlightExitCode()
    {
        exit_code=$?
        if [ $exit_code -ne 0 ]
        then
           echo -en " RC=${exit_code} "'\xf0\x9f\x98\xb1\x20'
        else
           echo -en ""
        fi
    }mac $ 

salida de la ejecución de "sudo bash". Tengo la sensación de que bash no es el shell en ejecución. Cuando tengo una declaración case en el .bashrc, tengo mensajes de error sobre la declaración case. ¿Por qué en el mundo no se puede encontrar el comando /usr/bin/id?

mac $ sudo bash
in .bashrc but claims to be bash
: No such file or directory
the path is /Users/mac
$PS1 variable is \u$(highlightExitCode) \$ 
$SHELL variable is /bin/bash
the path is: 
  /Library/Frameworks/Python.framework/Versions/3.7/bin:/Library/Frameworks/Python.framework/Versions/2.7/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/opt/X11/bin:/Developer/Tools:/Users/mac/.nexustools
root
end of this script.
: command not found
: command not found
'ash: /Users/mac/.bashrc: line 18: syntax error near unexpected token `
'ash: /Users/mac/.bashrc: line 18: `highlightExitCode()
bash: highlightExitCode: command not found
root # 

Obtengo los mismos resultados con "sudo -s":

 sudo -s
Password:
in .bashrc but claims to be /bin/bash
: No such file or directory
the path is /Users/mac
$PS1 variable is \u$(highlightExitCode) \$ 
$SHELL variable is /bin/bash
the path is: 
  /Library/Frameworks/Python.framework/Versions/3.7/bin:/Library/Frameworks/Python.framework/Versions/2.7/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/opt/X11/bin:/Developer/Tools:/Users/mac/.nexustools
root
end of this script.
: command not found
: command not found
'ash: /Users/mac/.bashrc: line 18: syntax error near unexpected token `
'ash: /Users/mac/.bashrc: line 18: `highlightExitCode()
bash: highlightExitCode: command not found
root #

0 votos

Con los archivos de DOS/Windows, las herramientas de unix (como bash) tratarán el retorno de carro como parte del contenido de la línea, por lo que, por ejemplo, está intentando ejecutar el archivo /usr/bin/id<carriage return> que no existe. Ver ¿Por qué un shell correcto script da un mensaje de error envuelto/truncado/corrupto? Por cierto, TextWrangler puede convertir fácilmente el archivo a los finales de línea de Unix.

2voto

Oskar Puntos 1242

Para casos como este con un archivo dot más detallado, para obtener un shell Root, yo usaría

sudo -s

Si eso funciona, puedes añadir una línea a tu .bashrc si desea un aviso más detallado: https://superuser.com/questions/866269/use-sudo-s-but-show-current-folder-name

Yo no y quiero que el prompt de Root sea muy diferente para saber que soy Root y no mi usuario normal ya que eso me ahorra dolores si me olvido de salir de Root lo antes posible.

Si quieres un excelente tutorial sobre Root shell para MacOS - ver https://scriptingosx.com/2018/04/demystifying-Root-on-MacOS-part-2-the-sudo-command/

1 votos

Sudo su es lo que yo uso... lo mismo pero tiene más sentido para mí. Totalmente preferencia personal.

0 votos

Bien dicho @ThomasNelson sudo -i también merece un vistazo.

1voto

Kerry Puntos 100

El problema era el siguiente: había guardado el archivo como un archivo de Windows.

La pista era un \r siguiendo el nombre del archivo cuando añadí el comando ls -l /usr/bin/id a mi .bashrc script ver los permisos del comando.

ls: /usr/bin/id\r: No such file or directory

Aquí estaba la barra de estado de textwrangler. Observe que .bashrc debe ser guardado como un archivo de Windows. enter image description here

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:

X