Linux source command windows

Is there an equivalent source command in Windows CMD as in bash or tcsh?

I know that in the unix world, if you edit your .profile or .cshrc file, you can do a source ~/.profile or source ~/.cshrc to get the effect on your current session. If I changed something in the system variable on Windows, how can I have it effect the current command prompt session without exiting the command prompt session and opening another command prompt session?

8 Answers 8

In the usual Windows command prompt (i.e. cmd.exe), just using call mybat.bat did what I wanted. I got all the environment variables it had set.

If mybat.bat runs other batch scripts, it needs to call them to allow execution to return to the current script.

call won’t work for powershell scripts however. Suppose you want to import a function and invoke it, source would work in bash

This is a very old question, but I think this should be the correct answer. «call myfile.bat» —> reads the environment variables from the batch file and sets those in current environment from where «call» command is invoked. then all those variables are available for use in the current shell.

Oh, and it was at a perfect 42. I almost wish I hadn’t upvoted and just left it there. Thanks much! 🙂

The dos shell will support .bat files containing just assignments to variables that, when executed, will create the variables in the current environment.

 c:> type EnvSetTest.bat set TESTXYZ=XYZ c:> .\EnvSetTest.bat c:> set | find "TESTX" TESTXYZ=XYZ c:> 

@BeniBela You can only undo the vote for a few minutes, then it gets locked. shellter: Vote corrected, thanks for the good answer 🙂 Also found that setlocal can be used for local variables, and one can move data between local and global like this: wiki.answers.com/Q/…

Following example will help you to solve your problem.

env.bat This file is for setting variables. Its contents are given blow.

test.bat Our main batch file.

call env.bat call print.bat pause 

Now print.bat batch file to print variables. Its contents given below

I am afraid not, but you can start using Powershell, which does support dot sourcing. Since powershell window is really based on cmd so all your dos command will continue to work, and you gain new power, much more power.

Thanks John Shen. I have search the web and haven’t found any equivalent. I have seen Powershell, perhaps I will start using that instead of the old command prompt.

Читайте также:  Linux remove all files by extension

The only way I have found this to work is to launch a new cmd window from my own config window. eg:

@echo off echo Loading. setlocal enabledelayedexpansion call 1.cmd call 2.bat . . if "%LocalAppData%"=="" set LocalAppData=%UserProfile%\Local Settings\Application Data SET BLAHNAME=FILE:%LocalAppData%\BLAH call blah blah cmd 

The last cmd will launch a new cmd prompt with the desired settings exported to the command window.

Here’s a workaround for some limited use-cases. You can read-in a file of commands and execute them in-line. For example the calling command file looks like:

echo OFF SETLOCAL ENABLEDELAYEDEXPANSION : echo. ---------------- echo. set-up java echo. ---------------- echo. rem call %DEV_SCRIPTS%\setup-java for /F "tokens=*" %%A in ( %DEV_SCRIPTS%\setup-java.bat ) do ( %%A ) call %DEV_SCRIPTS%\show-java : 

In the setup-java.bat file you can’t use % expansion. You need to use ! ; e.g.:

 set JRE_HOME=!JRE_08! rem set JRE_TARGET=!JRE_HOME! 

So you are litterally source -ing commands from a text file. You will need to test which commands sourced in this way. It took a few trials just to set some environment variables.

I don’t think we can do logic or loops because the command processor scans the file at the start. I am OK just having a simple workaround to reuse shared things like environment definitions. Most other things won’t need an actual source command (I am hoping). Good luck.

Источник

Linux Source Command with Examples

In Linux systems, source is a built-in shell command that reads and executes the file content in the current shell. These files usually contain a list of commands delivered to the TCL interpreter to be read and run.

This tutorial will explain how the source command works and when to use it.

Linux source command with examples

  • A system running a Linux distribution (learn how to install Ubuntu 20.04, how to install CentOS 7, or how to install Arch Linux)
  • An account with sudo privileges
  • Access to the terminal window/command line

Source Command Syntax

The source command uses the following syntax:

source [filename] [arguments]
  • [filename] : The name or path to the file you want the source command to execute.
  • [arguments] : Any arguments you provide become positional parameters when the file is executed.

Note: If you don’t provide the full path to the file you want to execute, source will search the $PATH variable for the file. If it does not find the file there, source will search the current directory.

The dot (period) character can be used in place of the source command, resulting in the same output:

Linux Source Command Examples

Here are some of the ways you can use the source command:

Pass Arguments

Create a text file called example.txt in the Home directory with the following content:

Use the source command to pass the content of this file as an argument:

Using the source command to pass a file as an argument

The output shows that the source command moves line by line, executing any commands listed in example.txt.

Читайте также:  Линукс тема вин 10

For a more complex example, change the content of example.txt to:

echo "The current directory is:" pwd echo "Today's date is:" date echo "The time is:" time 

Move the file to Home/source_command/example. With the source command, pass the content of the file as an argument using the full path to the file:

source source_command/example/example.txt

Using the source command with the full path to the file

Note: The source command also allows you to run scripts in the current shell environment, unlike the bash command, which creates a new shell environment.

Read the Configuration File

The source command also allows you to read variables from a file. Start by creating an example configuration file example_config.sh in the Home directory and adding the following content:

Create a bash script called example_bash.sh and add the following:

#!/usr/bin/env bash source example_config.sh echo "VAR1 is $VAR1" echo "VAR2 is $VAR2" echo "VAR3 is $VAR3"

The source command allows example_bash.sh to read the variables VAR1 , VAR2 , and VAR3 you defined in example_config.sh.

Run the example_bash.sh script using the source command:

Using the source command to read variables from a configuration file

Source Functions

If you have functions you are using in several different scripts, you can save them as separate files and use the source command to refer to them when writing scripts.

For instance, start by creating a function check_root.sh that checks whether the user running the script is a root user:

Create a script called example_script.sh and use the source command to insert the check_root.sh function:

#!/usr/bin/env bash source check_root.sh check_root echo "This is the root user"

Running this script as a non-root user produces «You must run this script as root» as the output and exits the script:

Running the script as a non-root user

Running the script as a root user shows «This is the root user» as the output:

sudo bash example_script.sh

Running the script as a root user

Note: Using the source command to run example_script.sh executes the script in the current shell environment. Since you cannot run the source command as the root user, starting the script causes the terminal window to close. Use the bash command to execute the script instead.

Refresh the Current Shell Environment

For this example, we are creating an alias command ll :

This command lists the files in the current directory using the extended format:

Using the new ll command to list the files in the current directory

However, this command only works in the current shell session. To make it permanent, open the bashrc file with:

Under the #some more ls aliases section, add the following:

Adding the new ll command alias in the bashrc file

Refresh the current shell environment with the source command:

After reading this tutorial, you should know how to use the source command in Linux to run multiple commands from a single file.

For a more comprehensive overview of useful commands, check out our Linux commands cheat sheet.

Источник

Команда source в Linux

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

Читайте также:  Linux mint горячие углы

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

Команда source linux

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

$ source путь_к_файлу аргументы

Никаких опций более не нужно. Если указан не абсолютный путь к файлу, а просто имя файла, то утилита будет искать исполняемый файл в текущей папке и директориях, указанных в переменной PATH. Давайте разберём несколько примеров работы с утилитой. Создаём скрипт, объявляющий переменную:

Затем загрузим переменную из этого файла:

Теперь можно попытаться вывести содержимое переменной и убедиться, что всё работает:

Однако, переменная есть только в текущем командном интерпретаторе, в других командных интерпретаторах её нет. Это отличие команды source от команды export, позволяющей экспортировать переменные окружения глобально.

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

source losstsource losst.pro

Аналогично работают и функции. Если объявить функцию в скрипте bash, а затем выполнить его с помощью команды source linux, то функция станет доступна в интерпретаторе:

#!/bin/bash
print_site() echo «losst.pro»
>

Теперь можно выполнить функцию print_site в терминале или любом другом скрипте:

Для тех, кто знаком с программированием на языке Си, можно провести аналогию с директивой #include, делающей доступными в текущем файле функции из других файлов. Если файл, имя которого передано как параметр команде, не существует, она вернёт код возврата 1 и завершится:

Вместо команды source можно использовать точку (.), однако здесь следует быть осторожными — между точкой и именем файла должен быть пробел для того, чтобы bash интерпретировал эту точку как отдельную команду, а не как часть имени файла:

Однако, нельзя писать .losstsource или ./losstsource, потому что обозначение ./ — это уже отсылка на текущую директорию, скрипт будет выполнен как обычно.

Выводы

В этой небольшой статье мы рассмотрели работу с командой source linux. Как видите, это очень простая и в то же время полезная команда, очень сильно облегчающая работу в терминале. Именно с её помощью работают виртуальные окружения Python и многие другие подсистемы.

Обнаружили ошибку в тексте? Сообщите мне об этом. Выделите текст с ошибкой и нажмите Ctrl+Enter.

Источник

Оцените статью
Adblock
detector