Принуждение emacs для выполнения с '-nw' при вызове от терминала

Umask не был бы соответствующим, при попытке управлять тем, что другие пользователи видят друг от друга. Однако, если Вы имеете и работаете с многочисленными файлами, которые чувствительны до такой степени, что попроситься разрешения получить доступ к ним является менее надоедливым/опасным, чем просто разрешение людям видеть то, что они хотят, чем umask 077 был бы хорошей идеей.

У меня есть некоторые чувствительные файлы на файловом сервере, которым я управляю. Я думаю, устанавливая строгий umask, затем имеющий периодический сценарий, возможно, задание крона для установки более определенных полномочий на объекты в определенных папках было бы идеальным решением для меня. Когда я настроил это, я отправлю назад здесь и сообщу, как это работало.

[Парни, колотящие sudo], Начинают новую дискуссию для него, могло потребоваться несколько потоков самих по себе, и этот поток о umask.

3
04.11.2010, 06:53
2 ответа

Я думаю, что Вы хотите определить, выполняется ли команда в терминале.

if [ -t 2 ]; then
  # Standard error is a terminal
  emacs -nw "$@"
elif [ -n "$DISPLAY" ]; then
  # An X display is available
  xterm -e emacs -nw "$@"
else
  # We have nothing
  emacs --daemon "$@"
fi

Если Вы хотите, чтобы это всегда произошло, когда Вы выполняете Emacs, помещаете его в сценарий и вызываете тот сценарий вместо этого. Можно назвать сценарий /usr/local/bin/emacs (принятие Linux), если Вы хотите, чтобы это было названо emacs и вызванный в предпочтении к “реальному” emacs исполняемый файл в /usr/bin.

Обратите внимание, что для редактирования файлов как корня необходимо использовать sudoedit (преимущества: редактор работает как Вы так, Вы получаете все свои настройки; отредактированный файл помещается в место атомарно, когда Вы заканчиваете редактировать, уменьшая шанс неудачи). Можно также отредактировать файлы как корень непосредственно в Emacs путем открытия /sudo::/path/to/file.

7
27.01.2020, 21:08
  • 1
    Ничего себе; я никогда не знал о sudoedit –  Michael Mrozek♦ 04.11.2010, 22:20

Скажите это:

$ echo "alias emacs='emacs -nw'" >> ~/.bashrc

Выйдите из системы, затем войдите в, и Вы получите поведение, которое Вы просите. Псевдоним применяется только к Bash.

9
27.01.2020, 21:08
  • 1
    и как я получаю переданный bashrun? –  Stefan 03.11.2010, 20:04
  • 2
    Согласно руководству, bashrun не читает ~/.bashrc. Если руководство является неправильным, можно сказать "непсевдоним emacs" в $XDG_CONFIG_HOME/bashrun/rc для удаления псевдонима для bashrun. –  Warren Young 03.11.2010, 20:09
  • 3
    mmm... Вы побеждаете! но.. Gilles побеждает больше :) (я хочу покрыть больше, чем просто удар), –  Stefan 03.11.2010, 21:01
  • 4
    @Stefan я думаю большая часть загрузки оболочек из .bashrc; если они не делают у них почти наверняка есть эквивалентный конфигурационный файл, Вы могли бы вставить ту же строку –  Michael Mrozek♦ 04.11.2010, 01:29
  • 5
    Помещение моего решения в .profile будет работать если /bin/sh Bash или другая оболочка, которая понимает псевдонимы, но дело не в этом во всех системах. Тем не менее я не вижу, почему это действительно имеет значение. /bin/sh существует для выполнения сценариев оболочки, не для интерактивного использования, которое подразумевает использование X. Если у Вас есть сценарий оболочки, Вы записали для использования в интерактивном режиме, вместо того, чтобы пробовать к рожку для обуви мое решение в работу для /bin/sh, просто помещенный #!/bin/bash или безотносительно наверху вместо этого. –  Warren Young 04.11.2010, 18:36

Теги

Похожие вопросы