Как сохранить функции/переменные локально в моем zshrc?
Любая переменная, объявленная в моем zshrc
, доступна в оболочке как переменная среды. Я не хочу, чтобы это произошло.
Я попытался поместить переменные в функцию и установить их как локальные, но тогда функция доступна вне zshrc
.
Как я могу сделать так, что происходит в моем zshrc остается в моем zshrc?
Ответы
Ответ 1
Они доступны, но они не экспортируются, поэтому скрипты, запускающиеся из командной строки, не получают эти переменные. Если ваш .zshrc
выглядит как
function zshrc()
{
local VAR=1
# Do stuff
}
zshrc
и вы никогда не хотите запускать функцию zshrc
снова, вы можете просто сделать
unfunction zshrc
потом.
Ответ 2
Если вы используете последнюю версию zsh, вы можете использовать анонимную функцию:
function () {
local xyz=abc
# whatever
}
Функция будет автоматически выполнена, а затем выброшена, она существует только для целей определения области.
Это работает для любого исходного файла, а не только для zshrc.
Ответ 3
Если вы не добавите слово 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
и т.д. для хранения функций и псевдонимов.
Просмотрите эту ссылку для получения дополнительных сведений об переменных окружения и их соответствующих оболочках
Также прочитайте это, чтобы понять, как установить переменные среды в командной строке с помощью расширений оболочки
Вы можете быстро просмотреть переменные окружения с помощью env
или printenv
Соглашение заключается в использовании UPCASE
Чтобы временно установить переменную окружения (сохраненную до закрытия терминала)
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="environmental variable set from the command line, saved in file for later use"
Проверяйте файл, на который вы его отправляете, он может не запускаться в новой строке, он мог быть объединен с вашей последней строкой, которая была другой функцией, псевдонимом или другим.
Это не полный ответ, но это отличный шаг в правильном направлении. Он показывает, как можно установить, использовать и удалять область действия в оболочке терминала.