/ / Як я можу зберігати функції / змінні локально для мого zshrc? - zsh, zshrc

Як зберегти функції / змінні для мого zshrc локально? - zsh, zshrc

Будь-яка змінна, яку я оголошую у моєму zshrc доступний у оболонці як змінну середовища. Я не хочу, щоб це сталося.

Я спробував помістити змінні в функцію та встановити їх як локальні, але потім функція доступна за межами zshrc.

Як це зробити? Що відбувається в моєму zshrc залишається в моєму zshrc?

Відповіді:

16 за відповідь № 1

Вони доступні, але вони не експортуються, тому сценарії, що запускаються з командного рядка, не отримують ці змінні. Якщо ти .zshrc виглядає наче

function zshrc()
{
local VAR=1
# Do stuff
}
zshrc

і ти ніколи не хочеш запускати zshrc функція знову ви можете просто зробити

unfunction zshrc

пізніше


28 для відповіді № 2

Якщо ви використовуєте останню версію zsh, ви можете використовувати анонімну функцію:

function () {
local xyz=abc
# whatever
}

Функція буде автоматично виконана, а потім викинута, вона існує лише для цілей обсягу.

Це працює для будь-який джерельний файл, не тільки zshrc.


5 для відповіді № 3

Якщо ви не додасте слово local до змінної він залишатиметься, поки ви не виконаєте одну з наведених нижче дій.

  1. Відкрийте нове вікно терміналу.
  2. Біжи exec zsh або exec bash в залежності від вашої оболонки. Це просто очищає ваші локальні змінні, які не були присвоєні цьому слову local.

Уникайте цього

method_name(){
a=11
echo $a
}

Правильний приклад

method_name(){
local a=11
echo $a
}

Ця змінна орієнтована на назву функції method_name і доступний лише всередині функції, коли він викликається (а не потім).

Якщо ви хочете отримати прямий доступ до цієї локальної змінної, ви можете встановити його таким чином

local z=11

І називайте це таким чином

echo $z

Залежно від вашої оболонки та потреб, ви можете використовувати .bash_profile або .bashrc або .zshrc тощо, щоб зберігати функції та псевдоніми.

Перегляньте цю посилання для отримання додаткових відомостей про змінні середовища та їх відповідні оболонки

Також прочитайте це, щоб зрозуміти, як встановити змінні середовища в командному рядку за допомогою розширення оболонки

Ви можете швидко переглядати змінні середовища з env або printenv

Конвенція полягає у використанні UPPERCASE

Щоб тимчасово встановити змінну середовища (збережена до закриття терміналу)

export A=11 або export B="11 is part of this string"

Припускаючи, що ви відкрили нове вікно терміналу абоджерело .zshrc або .bashrc або будь-який з тих, що ви використовуєте, тепер можете використовувати цю змінну середовища, доки ви не закриєте свій термінал. Примітка: не використовуйте $ при налаштуванні, але використовуйте $ при посиланні на змінну.

Приклади

echo "A is equal to: $A and that is pretty nice"

echo "$A"

Як джерело файлу

source ~/path/to/file/filename

Приклад

source ~/.bash_profile

Встановити змінну середовища (поки не видаляєте її або не встановлюєте її знову)

Використовуйте вищезазначений код, але помістіть його у ваш ~ / .bash_profile або ~ / .zshrc або інший відповідний файл. Збережіть файл і знайдіть його.

Приклад

export B="11 is part of this string"

Тепер ви можете переглянути його

env

Щоб видалити цю змінну середовища, видаліть її з файлу та знову відкриває файл.

Щоб тимчасово вилучити змінну навколишнього середовища, використовуйте параметр unset

Приклад

unset B

Зауважте, що немає $ коли знімається.

Встановити змінні середовища з командного рядка

export BLABLA="environment variable set from the command line, saved in file for later use"

Перевірте файл, на який ви його надсилаєте, він може не починатися з нового рядка, він, можливо, був зчеплений до останнього рядка, який був деякою іншою функцією, псевдонімом чи іншим.

Це не повна комплексна відповідь, але це великий крок у правильному напрямку. Він показує, як можна встановити, використати та видалити область застосування термінальної оболонки.