/ / Как да запазя функции / променливи локално на моя 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 и т.н., за да съхранявате функции и псевдоними.

Прегледайте тази справка за повече информация за променливите на околната среда и техните съответни черупки

Също така прочетете това, за да разберете как да зададете променливи на средата в командния ред, като използвате shell разширения

Можете бързо да преглеждате променливите на средата с env или printenv

Конвенцията е да се използва UPPERCASE

За временно задаване на променлива на средата (съхранявана, докато затворите терминала)

export A=11 или export B="11 is part of this string"

Ако приемем, че сте отворили нов терминален прозорец илиsource .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 B

Имайте предвид, че няма $ когато се изключва.

Задаване на променливи от командния ред

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

Проверете файла, до който го изпращате, може да не се стартира на нов ред, може да е свързан с последната ви линия, която е друга функция, псевдоним или друго.

Това не е напълно изчерпателен отговор, но това е страхотна стъпка в правилната посока. Показва как може да се зададе, използва и премахни обхватът в корпуса на терминала.