У меня есть эта строка в моем .bashrc
, и я хотел бы знать, что именно это означает
# If not running interactively, don't do anything
[[ $- != *i* ]] && return
$-
означает 'текущие флаги'. echo $-
возвраты "himBH". Это - все значения по умолчанию. [[ $- != *i* ]] && return
на самом деле делает то, что это говорит выше в комментарии: это проверяет, установлен ли интерактивный флаг. [[И]] делают это булевской переменной, таким образом, это заканчивается в "истинном" или "ложном". "ложь & & возвратитесь", заставляет его пойти "на истинный & & возвратитесь", заставляет его выполнить возврат. флаги по умолчанию, объясненные более подробно:
ч - для "хеша все": это говорит удару помнить местоположения команд, которые он нашел посредством запросов Вашего ПУТИ.
я для "интерактивного": ввод входа & возвращение вывода.
м для "монитора": это включает управление заданиями
, B для "фигурной скобки, расширяются". Это позволяет Вам использовать расширение фигурной скобки
, H для "истории, расширяются". Это - то, что позволяет Вам повторно выполнить команду из своей истории путем снабжения предисловием ее числа с восклицательным знаком
<час>Между прочим. Я имею...
# If not running interactively, don't do anything
case $- in
*i*) ;;
*) return;;
esac
В основном делает то же, но легче читать, я принимаю.
В основном это означает, "Если флаги оболочки не содержат нижний регистр i, то остановите функцию/сценарий здесь".
[[ ]]
обозначает, что условное выражение в ударе
$-
означает флаги оболочки. Это будет содержать "i", если оболочка будет интерактивной (т.е. можно ввести команды, в противоположность, это выполняется, сценарий)
!=
просто означает "не равный".
*i*
подстановочный шаблон, который соответствует чему-либо содержащему "i"
return
без любых аргументов, просто означает, останавливают выполнение текущей функции или сценария.
&&
логическое И оператор. Выражение справа, в этом случае return
, будет только оценено (выполняемое), если выражение слева будет верно . Таким образом на многих языках программирования, a && b
сокращение от if a then b
- это называют "оценкой короткого замыкания", и она сводит учителей программирования с ума при использовании ее :D
Я предположил бы, что это похоже на это, говорит: если удар не открыт в интерактивной оболочке, то ничего не делайте.
я не знаю целой функции, но существуют, вероятно, команды и набор флагов ниже той строки в случае, если у Вас действительно есть удар открытым в TTY.