Verwendung von Emacs für den Visual Editor öffnet die Datei /etc/sudoers auf dem Mac nicht

Verwendung von Emacs für den Visual Editor öffnet die Datei /etc/sudoers auf dem Mac nicht

Ich würde meine Datei gerne auf meinem Mac emacsbearbeiten , aber ich schaffe es einfach nicht. Ich habe alle folgenden Konfigurationseinstellungen in der Datei ausprobiert, ohne Erfolg:sudoersvisudosudoers

  • Defaults editor = "/usr/bin/emacs"zeigt den emacsIntro-Bildschirm
  • Defaults editor = "/usr/bin/emacs visudo"erstellt eine neue Datei mit dem Namen "visudo"
  • Defaults editor = "/usr/bin/emacs sudoers"öffnet die sudoers-Datei, allerdings als schreibgeschützten Puffer
  • EDITOR="/usr/bin/emacs"in der Shell ausführen (oder exportin meine Datei einbinden ~/.bash_profile), dann visudomit ausführen Defaults env_keep+="EDITOR"zeigt den emacsIntro-Bildschirm
  • Defaults editor = "emacs"besagt, dass die editorVariable mit beginnen muss/
  • Defaults editor = /usr/bin/emacszeigt den Intro-Bildschirm
  • Defaults editor = "/usr/bin/emacs -u matt"zeigt den Intro-Bildschirm

Im Grunde funktioniert nichts, was ich tue. Was mache ich falsch?

Ich verwende macOS High Sierra (10.13).

Antwort1

Das Problem ist, dass es so visudoläuft : . Emacs interpretiert '--' nicht als 'Ende der Argumente' und alles, was danach kommt, als Dateinamen wie andere Editoren, sondern zeigt stattdessen den Einführungsbildschirm an. Der einfachste Weg, den ich kenne, ist ein Wrapper:emacs/usr/bin/emacs -- /etc/sudoers.tmp

bash-3.2$ sudo cat > /usr/bin/emacs-visudo-wrapper.sh << 'EOF'
#!/bin/sh
set -eu
ARGS=()
for var in "$@"; do
   [ "$var" != '--' ] && ARGS+=("$var")
done
exec /usr/bin/emacs "${ARGS[@]}"
EOF
bash-3.2$ sudo chown root:wheel /usr/bin/emacs-visudo-wrapper.sh
bash-3.2$ sudo chmod 755 /usr/bin/emacs-visudo-wrapper.sh
bash-3.2$ sudo cat >> /etc/sudoers << 'EOF'
Defaults    editor = "/usr/bin/emacs-visudo-wrapper.sh"
EOF

verwandte Informationen