Как я обнаружил бы оболочку невхода в систему? (В Zsh)

Если Вы не можете произвести ЗАВЕРШЕННЫЕ ПУСТЫМ УКАЗАТЕЛЕМ имена файлов (как, например. find -print0) можно попытаться заключить имена файлов в кавычки путем передачи по каналу его через sed 's/^/"/;s/$/"/', который добавляет кавычки вначале и конец строки. Отметьте однако, это в этом случае Вы должны иметь:

  • один файл на строку
  • никакие двойные кавычки в именах файлов

Преимущество, что можно в значительной степени произвольно преобразовать вывод (например, когда Вы решаете не переименовать, а не удалить или когда необходимо лишить части вывода).

7
13.04.2017, 15:36
1 ответ
if [[ -o login ]]; then
  echo "I'm a login shell"
fi

if [[ -o interactive ]]; then
  echo "I'm interactive"
fi

[[ -o the-option ]] возвращает true, если-опция установлена.

Можно также получить значения опций с $options специальный ассоциативный массив, или путем выполнения set -o.

Чтобы проверить, существует ли ssh-агент:

if [[ -w $SSH_AUTH_SOCK ]]; then
  echo "there's one"
fi

В kshzsh):

case $- in (*i*) echo interactive; esac
case $- in (*l*) echo login; esac

В bash, это - путаница, Вам нужно:

case $- in *i*) echo interactive; esac # that should work in any Bourne/POSIX shell
case :$BASHOPTS: in (*:login_shell:*) echo login; esac

И $SHELLOPTS содержит еще некоторые опции. Некоторые опции можно установить с set -<x>, некоторые с set -o option, некоторые с shopt -s option.

12
27.01.2020, 20:16
  • 1
    Право... Я заметил их -o опции, но я думал, что они были опциями, которые были устанавливаемыми, чтобы переопределить значения по умолчанию т.е. вызвать поведение, вместо того, чтобы запросить фактическую ситуацию.Я неправ? –  Geeb 24.01.2014, 13:24
  • 2
    @Geeb, [[ -o opt ]] проверки, если opt установлен. Я не вижу, почему это сделало бы это только, когда опция установлена некоторый путь а не другой. –  Stéphane Chazelas 24.01.2014, 14:10
  • 3
    , Таким образом, Вы говорите, что запросы значений опции всегда сообщают об истине вопроса? например, Вы не могли обмануть экземпляр оболочки, запущенный в неинтерактивном режиме, в чтение .zshrc путем установки interactive опция? –  Geeb 24.01.2014, 14:38
  • 4
    .zshrc читается на запуске, когда оболочка является интерактивной. Это может быть считано кем-то выполнение source ~/.zshrc. –  Stéphane Chazelas 24.01.2014, 14:49
  • 5
    OK другой тип обмана: Установка login опция в .zshrc заставил бы все интерактивные оболочки, запущенные после этого изменения вести себя, как будто они были результатом входа в систему, правильно? т.е. поведение вызывается - по правде говоря, они не действительно оболочки входа в систему и только ведут себя как таковые, потому что им сказали быть так полномочиями установки опции? –  Geeb 24.01.2014, 16:09

Теги

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