Ich würde meine Datei gerne auf meinem Mac emacs
bearbeiten , aber ich schaffe es einfach nicht. Ich habe alle folgenden Konfigurationseinstellungen in der Datei ausprobiert, ohne Erfolg:sudoers
visudo
sudoers
Defaults editor = "/usr/bin/emacs"
zeigt denemacs
Intro-BildschirmDefaults 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 PufferEDITOR="/usr/bin/emacs"
in der Shell ausführen (oderexport
in meine Datei einbinden~/.bash_profile
), dannvisudo
mit ausführenDefaults env_keep+="EDITOR"
zeigt denemacs
Intro-BildschirmDefaults editor = "emacs"
besagt, dass dieeditor
Variable mit beginnen muss/
Defaults editor = /usr/bin/emacs
zeigt den Intro-BildschirmDefaults 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 visudo
lä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