Команда source в windows

Обновлено: 06.07.2024

Я пишу сценарий оболочки, чтобы прочитать файл с парой ключ=значение и установить эти переменные как переменные среды. Но у меня есть сомнения, если я сделаю source file.txt, установит ли переменные, определённые в этом файле, как переменную среды, или я должен прочитать файл построчно и установить его с помощью команды экспорта?

В этом случае команда source отличается от команды export?

Когда вы делаете source файла, назначения будут установлены, но переменные не будут экспортированы, если не установлена опция allexport. Если вы хотите, чтобы все переменные были экспортированы, гораздо проще использовать allexport и source файла, чем читать файл и явно использовать export. Другими словами, вам следует сделать:

Я предпочитаю . потому что он более переносимый, чем source, но source отлично работает в bash.

Обратите внимание, что экспорт переменной не делает её переменной среды. Он только делает её переменной среды для подоболочек.

source (.) или export

  1. source some_script.sh или его POSIX-совместимый эквивалент . some_script.sh, переносит переменные из других скриптов, а
  2. export my_var="something" выталкивает переменные в другие сценарии/процессы, которые вызываются/запускаются из текущего сценария/процесса.

Использование export some_var="something" похоже на установку этой переменной локально, поэтому она доступна для остальной части текущего скрипта или процесса, а затем также передаётся во все подпрограммы или процессы, которые вы можете вызывать из указать далее.

Подробнее

Итак, рассмотрим следующее:

а если сделать так:

за исключением того, что первая версия выше, где мы вызвали export some_var="something", на самом деле имеет рекурсивную передачу или экспорт переменных в подпроцессы, поэтому, если мы вызываем script1.sh изнутри нашего текущего сценария/процесса, тогда script1.sh будет получить экспортируемые переменные из нашего текущего сценария, и если script1.sh вызывает script5.sh, а script5.sh вызывает script10.sh, то оба этих сценария также автоматически получат экспортируемые переменные. Это отличается от приведённого выше ручного случая, когда только те скрипты, которые явно вызываются с вручную установленными переменными при вызове скриптов, получат их, поэтому подпрограммы НЕ будут автоматически получать какие-либо переменные из своих вызывающих скриптов!

Как «отменить экспорт» переменной:

Обратите внимание, что после того, как вы экспортировали переменную, вызов unset для неё будет «отменять её вызов», например:

Команда source средства winget позволяет управлять репозиториями, к которым обращается Диспетчер пакетов Windows. С помощью команды source можно добавить, удалить, обновить репозитории или вывести список репозиториев.

Команда source предоставляет данные для обнаружения и установки приложений. Добавляйте новый источник, только если вы считаете это расположение безопасным.

Использование

winget source \<sub command> \<options>

Исходное изображение

Аргументы

Доступные аргументы перечислены ниже.

Аргумент Описание
-?, --help Позволяет получить дополнительную справку по этой команде.

Вложенные команды

Команда source поддерживает следующие вложенные команды для управления источниками.

Вложенная команда Описание
add Добавляет новый источник.
list Перечисляет список активных источников.
update Обновляет источник.
remove Удаляет источник.
reset; Сбрасывает winget и msstore до начальной конфигурации.
export Экспорт текущих источников.

Параметры

Команда source поддерживает следующие параметры.

добавление

Вложенная команда add добавляет новый источник. Для этой вложенной команды требуется параметр --name и аргумент имя. Команда add изменяет разрешения на доступ пользователя, поэтому для нее требуется, чтобы у пользователя были права администратора.

Использование: winget source add [-n, --name] \<name> [-a] \<url> [[-t] \<type>]

Вложенная команда add также поддерживает необязательный параметр type. Параметр type передает клиенту тип репозитория, к которому он подключается. Поддерживаются следующие типы.

Type Описание
Microsoft.PreIndexed.Package Тип источника <default>.

Вложенная команда list перечисляет активные в данный момент источники. Эта вложенная команда также предоставляет подробные сведения об определенном источнике.

Использование: winget source list [-n, --name] \<name>

list all

Вложенная команда list выводит полный список поддерживаемых источников. Например:

list source details

Чтобы получить полные сведения об источнике, передайте команде имя, используемое для обнаружения источника. Например:

Name отображает имя, по которому определяется источник. Type отображает тип репозитория. Arg отображает URL-адрес или путь, используемый источником. Data отображает необязательное имя пакета, используемое при необходимости. Updated отображает дату и время последнего обновления источника.

обновление

Вложенная команда update принудительно начинает обновление отдельного источника или всех источников.

Использование: winget source update [-n, --name] \<name>

update all

Вложенная команда update сама по себе будет запрашивать и обновлять каждый репозиторий. Пример: C:\winget update

Источник обновления

Вложенная команда update с параметром --name может обращаться к отдельному источнику и выполнить его обновление. Например: C:\winget source update --name contoso

удалить

Вложенная команда remove удаляет источник. Для указания источника этой вложенной команде требуется параметр --name и аргумент имя. Команда remove изменяет разрешения на доступ пользователя, поэтому для нее требуется, чтобы у пользователя были права администратора.

Использование: winget source remove [-n, --name] \<name>

Пример: winget source remove --name Contoso

сброс

Вложенная команда reset сбрасывает клиент обратно к исходной конфигурации. Вложенная команда reset удаляет все источники и задает для источника значение по умолчанию. Эта вложенная команда должна использоваться только в редких случаях. Команда reset изменяет разрешения на доступ пользователя, поэтому для нее требуется, чтобы у пользователя были права администратора.

Так как команда reset очистит все источники, необходимо принудительно выполнить действие с помощью аргумента --force.

Использование: winget source reset --force

экспорт

Подкоманда export позволяет экспортировать определенные сведения об источнике в JSON-файл.

Вот несколько примеров.

Репозитории по умолчанию

Диспетчер пакетов Windows указывает два репозитория по умолчанию. Репозитории можно узнать с помощью команды list. Пример: winget source list

  • msstore — каталог Microsoft Store.
  • winget — репозиторий приложений в Диспетчере пакетов Windows.

Исходные соглашения

Отдельные источники перед доступом к репозиторию могут потребовать у пользователя принять условия. Прежде чем добавлять или использовать репозиторий, пользователь должен принять условия.

Изображение лицензии источника

Если пользователь не принял соглашения или не подтвердил согласие, он не сможет получить доступ к исходному содержимому.

Я создал виртуальную среду вокруг своего проекта, но когда я пытаюсь ее активировать, я не могу. Это может быть просто синтаксис или расположение папки, но сейчас я в тупике.

Вы можете видеть ниже, я создаю virtualenv и называю его venv. Все в порядке, потом пытаюсь активировать, запустив source venv/bin/activate

Я думаю, это может быть связано с моим системным путем, но не уверен, на что его указать (я знаю, как редактировать путь). Я использую python 7 / windows os, виртуальный env 2.2.x

Эта документация действительно помогает как для систем Posix, так и для Windows: virtualenv.pypa.io/en/stable/userguide

source - это команда оболочки, предназначенная для пользователей, работающих в Linux (или любой Posix, но не в Windows).

В Windows virtualenv создает командный файл, поэтому вы должны запустить его venv\Scripts\activate вместо него (согласно документации virtualenv по сценарию активации ).

Изменить: трюк здесь для Windows не указывает расширение BAT:

PS C: \ DEV \ aProject \ env \ Scripts> &. \ Activate
(env) PS C: \ DEV \ aProject \ env \ Scripts>

Это также помогает virtualenv в системах Posix и Windoze. virtualenv.pypa.io/en/stable/userguide Я не вижу этот каталог "venv" после установки Python 2.7 в Windows. Совет? Я перешел по ссылке Blairg23, но не вижу скрипта «активировать» в моем каталоге «Scripts» Python. Я запустил, .\\venv\Scripts\activate.bat но команда просто передает Windows 10 без активации venv sysmbol (venv) C: \ myApp . в чем проблема

Я также столкнулся с той же проблемой на моем компьютере с Windows 10. Какие шаги я пробовал:

Перейдите к терминалу andconda Шаг 1

Вы можете проверить это с помощью инструмента паука в анаконде, набрав import tensorflow as tf

Это помогло вам решить проблему? Непонятно, говорите ли вы «это работает» или «у меня такая же проблема»

У меня такая же проблема. Я использовал Python 2, Windows 10 и Git Bash. Оказывается, в Git Bash вам нужно использовать:

У меня есть компьютер с Windows, и использование терминала Git Bash было единственным терминалом, который работал у меня. (Другими терминалами, которые я пытался использовать, были командная строка и терминал VS Code.)

Для активации вы можете перейти в venv каталог virtualenv с помощью cd venv .

Затем в Windows введите dir (в unix введите ls ). Вы получите 5 папок include , Lib , Scripts , tcl и 60

Теперь введите, .\Scripts\activate чтобы активировать свой virtualenv venv .

Ваше приглашение изменится, показывая, что теперь вы работаете в виртуальной среде. Это будет выглядеть примерно так (venv)user@host:

И ваш venv теперь активирован.

введите описание изображения здесь

Для окон введите в терминале "C: \ Users \ Sid \ venv \ FirstProject \ Scripts \ activate" без кавычек. Просто укажите местоположение вашей папки Scripts в вашем проекте. Итак, команда будет выглядеть так: расположение_папки_скриптов \ активировать.

Убедитесь, что venv есть, и просто следуйте приведенным ниже командам. Работает в Windows 10.

Перейдите по пути, в котором вы хотите разместить виртуальную среду:

Создайте виртуальную среду с именем «env»:

Добавьте путь к файлу игнорирования git (необязательно):

Активируйте виртуальный env:

Я чертовски много использую virtualenv в Windows с помощью git bash, я обычно в конечном итоге указываю двоичный файл python явно.

Оба предполагают, что ваш рабочий каталог содержит ваш virtualenv ( .env ).

Кроме того , некоторые вещи не ведут себя правильно кашлять _ansible_ кашель , когда virtualenv не активирован, поэтому если что - то странно , вы , возможно , придется активировать venv все равно :(

Вы можете запустить исходную команду на терминале cygwin

Если вы видите 5 папок ( Include , Lib , Scripts , tcl , pip-selfcheck ) после использования virtualenv yourenvname команды, измените каталог Scripts папки в CMD себя и просто использовать « активировать » команду.

откройте папку с любой консолью gitbash. например, используя консольную программу visualCode и Gitbash: 1) Установите Gitbash для Windows

2) с помощью VisualCode IDE, щелкните правой кнопкой мыши над проектом открыто в терминальной консоли опции

3) на оконной консоли в Visualcode ищем оболочку Select- > default и меняем ее на Gitbash

4) теперь ваш проект открыт с помощью консоли bash и правильного пути, поместите исходный код ./Scripts/activate

Кстати: . с пробелом = источник

введите описание изображения здесь

Небольшое напоминание, но на Win10 cmd у меня были неправильные косые черты. Согласно документации python команда активации: C:\> <venv>\Scripts\activate.bat когда вы просматриваете каталоги, это, например, cd .env/Scripts

Итак, чтобы создать свой Venv, я использовал python -m venv --copies .env и активировал .env\Scripts\activate.bat

Команда source официально предназначена для семейства операционных систем Unix , и в основном вы не можете использовать ее в Windows. вместо этого вы можете использовать venv\Scripts\activate команду для активации вашей виртуальной среды.

Сделал снимок экрана того, как команда venv \ Scripts \ activate работает правильно

Если вы используете Windows, используйте команду «venv \ Scripts \ activate» (без слова source), чтобы активировать виртуальную среду. Если вы используете PowerShell, вам может потребоваться использовать Activate с заглавной буквы.

Если вы используете ОС Windows, то в терминале Gitbash используйте следующую команду $ source venv / Scripts / activate. Это поможет вам войти в виртуальную среду.

Измените оболочку по умолчанию в терминале vs code на git bash.

теперь ваш проект открыт с консолью bash и правильным путем, поместите "source venv \ Scripts \ activate" в Windows

Команда Source в Bash

source это оболочка, встроенная в Bash и другие популярные оболочки, используемые в операционных системах Linux и UNIX. Его поведение может немного отличаться от оболочки к оболочке.


Синтаксис исходной команды

Синтаксис source команды следующий:

  • source и . (точка) - это одна и та же команда.
  • Если FILENAME путь к файлу не полный, команда выполнит поиск файла в каталогах, указанных в $PATH переменной среды . Если файл не найден в $PATH команде, будет выполнен поиск файла в текущем каталоге.
  • Если ARGUMENTS они заданы, они станут позиционными параметрами для FILENAME .
  • Если FILENAME существует source код завершения команды 0 , в противном случае, если файл не найден, он вернется 1 .


Примеры исходных команд

В этом разделе мы рассмотрим некоторые основные примеры использования source команды.


Функции поиска

Если у вас есть сценарии оболочки, использующие те же функции, вы можете извлечь их в отдельный файл, а затем получить этот файл в своих файлах.

Теперь в каждом из ваших сценариев, которые должны запускаться только пользователем root, просто создайте functions.sh файл и вызовите функцию: Если вы запустите приведенный выше сценарий как пользователь без полномочий root, он напечатает «Этот сценарий должен быть запущен от имени пользователя root» и завершится.

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


Конфигурационный файл Bash

С помощью source команды вы также можете читать переменные из файла. Переменные должны быть установлены с использованием синтаксиса Bash VARIABLE=VALUE .

Давайте создадим тестовый файл конфигурации:

В вашем bash-скрипте используйте source команду для чтения файла конфигурации:

Если вы запустите скрипт, результат будет выглядеть так:


Вывод

Из этого руководства вы узнали, как использовать source встроенную команду в сценариях оболочки.

Favorite

Добавить в избранное (2 оценок, среднее: 5,00 из 5)

Bash Heredoc

К оманда source читает и выполняет команды из файла, указанного в качестве аргумента в текущей среде оболочки. Полезно загружать функции, переменные и файлы конфигурации в сценарии оболочки.

source это оболочка, встроенная в Bash и другие популярные оболочки, используемые в операционных системах Linux и UNIX. Его поведение может немного отличаться от оболочки к оболочке.

Синтаксис исходной команды

Синтаксис команды source следующий:

Примеры команды source

В этом разделе мы рассмотрим некоторые основные примеры использования команды source.

Функции поиска

Если у вас есть сценарии оболочки, использующие те же функции, вы можете извлечь их в отдельный файл, а затем получить этот файл в своих файлах.

Теперь в каждом из ваших сценариев, которые должны запускаться только пользователем root, просто создайте файл functions.sh и вызовите функцию:

Если вы запустите приведенный выше сценарий как пользователь без полномочий root, он напечатает «Этот сценарий должен быть запущен от имени пользователя root» и завершится.

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

Конфигурационный файл Bash

С помощью команды source вы также можете читать переменные из файла. Переменные должны быть установлены с использованием синтаксиса VARIABLE=VALUE в Bash.

Давайте создадим тестовый файл конфигурации:

В вашем bash-скрипте используйте команду source для чтения файла конфигурации:

Если вы запустите скрипт, результат будет выглядеть так:

Заключение

Из этой статьи вы узнали, как использовать sourceвстроенную команду в сценариях оболочки.

Если у вас есть какие-либо вопросы или отзывы, не стесняйтесь оставлять комментарии.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Читайте также: