Как сохранить функции / переменные локальными для моего zshrc?
любая переменная, которую я объявляю в my zshrc
доступно в оболочке в качестве переменной среды. Я не хочу, чтобы это произошло.
Я попытался поместить переменные в функцию и установить их как локальные, но тогда функция доступна вне zshrc
.
Как я могу сделать это так что происходит в моем zshrc остается в моем zshrc?
3 ответов
они доступны, но они не экспортируются, поэтому сценарии, запускаемые из командной строки, не получают эти переменные. Если .zshrc
выглядит так:
function zshrc()
{
local VAR=1
# Do stuff
}
zshrc
и вы тогда не хотите запустить zshrc
функция снова вы можете просто сделать
unfunction zshrc
далее.
Если вы используете последнюю версию zsh, вы можете использовать анонимную функцию:
function () {
local xyz=abc
# whatever
}
функция будет автоматически выполнена, а затем выброшена, она существует только для целей области видимости.
это работает для любой найденный файл не только zshrc.
если вы не добавляете слово local
для переменной он останется, пока вы не выполните одно из следующих действий:
- открыть новое окно терминала.
- выполнить
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
etc. для хранения функций и псевдонимы.
вы можете быстро просматривать переменные среды с помощью env
или printenv
соглашение заключается в использовании верхнего регистра
чтобы временно установить переменную среды (хранится, пока вы закрыть терминал)
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"
как источник 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"
Проверьте файл, в который вы его отправляете, он может не начинаться с новой строки, возможно, он был объединен с вашей последней строкой это была какая-то другая функция, псевдоним или что-то еще.
это не полностью исчерпывающий ответ, но это большой шаг в правильном направлении. Он показывает, как область в оболочке терминала может быть установлена, использована и удалена.