У мене є цей рядок, .bashrc
і я хотів би знати, що саме це означає
# If not running interactively, don't do anything
[[ $- != *i* ]] && return
У мене є цей рядок, .bashrc
і я хотів би знати, що саме це означає
# If not running interactively, don't do anything
[[ $- != *i* ]] && return
Відповіді:
$-
означає "поточні прапори".echo $-
повертає "himBH". Це все за замовчуванням.[[ $- != *i* ]] && return
насправді робить те, що йдеться вище в коментарі: перевіряє, чи встановлений інтерактивний прапор. [[І]] роблять його булевим, так що він закінчується "істинним" або "хибним". "помилковий & повернення" змушує його продовжуватись, "справжній & повернення" змушує його виконати.Прапорці за замовчуванням пояснюються більш докладно:
h - це "хеш все": це вказує bash запам'ятати місця розташування команд, які він знайшов, запитуючи ваш PATH.
i - для "інтерактивних": введення вводу та отримання вихідних даних.
m - для "монітора": це дозволяє контролювати роботу
B призначений для "розширення дужки". Це дозволяє використовувати розширення дужок
Н - це "історія розширення". Це те, що дає змогу повторити команду зі своєї історії, попередньо встановивши її номер зі знаком оклику
До речі. Я маю ...
# If not running interactively, don't do anything
case $- in
*i*) ;;
*) return;;
esac
В основному робить те саме, але легше читати, я припускаю.
В основному це означає "Якщо прапори оболонки не містять малого регістру i, тоді зупиніть функцію / скрипт".
[[ ]]
позначає умовний вираз у bash
$-
означає прапори оболонки. Він буде містити "i", якщо оболонка інтерактивна (тобто ви можете вводити команди, на відміну від, вона виконує сценарій)
!=
просто означає "не дорівнює".
*i*
- це шаблон підстановки, який відповідає чому-небудь, що містить "i"
return
без жодних аргументів просто означає зупинити виконання поточної функції або сценарію.
&&
є логічним і оператором. Вираз праворуч, у цьому випадку return
, буде оцінено (виконано) лише у тому випадку , якщо вираз зліва є істинним . Так що у багатьох мовах програмування a && b
це скорочення if a then b
- це називається "оцінка короткого замикання", і це зводить з розуму вчителів програмування, коли ви користуєтесь ним: D
Я б припустив, що так, як це говорить: якщо bash не відкритий в інтерактивній оболонці, тоді нічого не робіть.
Я не знаю всієї функції, але, мабуть, є команди та прапори, встановлені під цим рядком, якщо у вас є відкриття в TTY.
$-
і*i*
як він дізнається, чи є його інтерактивний режим чи ні