0 votes

Beaucoup d'erreurs après sudo bash dans le terminal

Je veux exécuter beaucoup de commandes terminal sans avoir à placer sudo devant chaque commande. Je suis sous macOS 10.10.5 dans le terminal.

Je fais sudo bash, mais je reçois plein d'erreurs dans mon script .bashrc.

Voici mon fichier .bashrc

mac $ cat .bashrc
#! /bin/bash
# ~/.bashrc: exécuté par bash(1) pour les shells non-login.
#    voir /usr/share/doc/bash/exemples/startup-files (dans le package bash-doc)
#    pour des exemples
echo "dans .bashrc mais prétend être $0"
/usr/bin/id
which id
echo "le chemin est $(pwd)"
echo "\$PS1 variable est ${PS1}"
echo "\$SHELL variable est ${SHELL}"
echo -e "le chemin est: \n  $PATH"
echo $USER
echo "fin de ce script."

# comment afficher une fonction existante
# 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 $ 

Résultat de l'exécution de "sudo bash. J'ai le sentiment que bash n'est pas le shell en cours d'exécution. Lorsque j'ai une instruction switch dans .bashrc, j'obtiens des messages d'erreur à propos de l'instruction switch. Pourquoi diable ne peut-on pas trouver la commande /usr/bin/id ?

mac $ sudo bash
dans .bashrc mais prétend être bash
: Aucun fichier ou dossier de ce type
le chemin est /Users/mac
$PS1 variable est \u$(highlightExitCode) \$ 
$SHELL variable est /bin/bash
le chemin est: 
  /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
fin de ce script.
: commande introuvable
: commande introuvable
'ash: /Users/mac/.bashrc: ligne 18: erreur de syntaxe près du jeton inattendu `
'ash: /Users/mac/.bashrc: ligne 18: `highlightExitCode()
bash: highlightExitCode: commande introuvable
root # 

J'obtiens les mêmes résultats avec "sudo -s":

 sudo -s
Mot de passe :
dans .bashrc mais prétend être /bin/bash
: Aucun fichier ou dossier de ce type
le chemin est /Users/mac
$PS1 variable est \u$(highlightExitCode) \$ 
$SHELL variable est /bin/bash
le chemin est: 
  /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
fin de ce script.
: commande introuvable
: commande introuvable
'ash: /Users/mac/.bashrc: ligne 18: erreur de syntaxe près du jeton inattendu `
'ash: /Users/mac/.bashrc: ligne 18: `highlightExitCode()
bash: highlightExitCode: commande introuvable
root #

2voto

Oskar Points 1242

Pour des cas comme celui-ci avec un fichier dot plus détaillé, pour obtenir un shell root, j'utiliserais

sudo -s

Si cela fonctionne, vous pouvez ajouter une ligne à votre fichier .bashrc si vous aimez un invite plus détaillé : https://superuser.com/questions/866269/use-sudo-s-but-show-current-folder-name

Je ne le fais pas et je veux que l'invite root soit très différente afin de savoir que je suis root et non mon utilisateur normal, car cela m'évite des problèmes si j'oublie de quitter root dès que possible.

Si vous voulez un excellent tutoriel sur le shell root pour macOS - consultez https://scriptingosx.com/2018/04/demystifying-root-on-macos-part-2-the-sudo-command/

1voto

Kerry Jones Points 145

Voici le problème : j'avais enregistré le fichier en tant que fichier Windows.

L'indice était un \r suivant le nom du fichier lorsque j'ai ajouté la commande ls -l /usr/bin/id à mon script .bashrc voir les permissions de la commande.

ls: /usr/bin/id\r: Aucun fichier ou dossier de ce type

Voici la barre d'état de TextWrangler. Remarquez que .bashrc doit être enregistré en tant que fichier Windows. entrer la description de l'image ici

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X