source命令与“.”点命令
- 格式:doc
- 大小:31.50 KB
- 文档页数:4
Linux中source命令的使⽤⽅式source是⼀个内置的,⽤于从当前shell会话中的⽂件读取和执⾏命令。
source命令通常⽤于保留、更改当前shell中的环境变量。
简⽽⾔之,source⼀个,将会在当前shell中运⾏execute命令。
source命令可⽤于:刷新当前的shell环境在当前环境使⽤source执⾏Shell从脚本中导⼊环境中⼀个Shell函数从另⼀个Shell脚本中读取变量source命令的语法source命令它需要⼀个⽂件,如果提供了参数,那么将⽤作传递脚本的位置参数。
source FILENAME [ARGUMENTS]也可以使⽤.替代source命令:. FILENAME [ARGUMENTS]如何使⽤source命令1. 刷新当前的shell环境可以在当前的shell环境中定义⼀个别名。
为ls -al定义⼀个别名为ll:[root@localhost ~]# echo "alias ll='ls -al'" >> ~/.bashrc在~/.bashrc⽂件中定义完别名,可以使⽤source命令刷新当前shell环境:[root@localhost ~]# source ~/.bashrc2. 在当前环境使⽤source执⾏Shell脚本Shell脚本不知道你在当前Shell环境中定义的变量。
source命令可⽤于在当前会话中执⾏你的Shell脚本。
下⾯在定义⼀个变量:[root@localhost ~]# website=https://[root@localhost ~]# vim web.sh#!/bin/bashecho $website[root@localhost ~]# source web.shhttps://3. 从脚本中导⼊环境中⼀个Shell函数⾸先创建⼀个脚本,定义⼀个函数:[root@localhost ~]# vim func.sh#!/bin/bashfoo(){echo "test function!"}要在当前的shell会话中导⼊上述脚本的功能,使⽤下⾯命令:[root@localhost ~]# source func.sh下⾯在终端中执⾏以下func.sh脚本中的foo函数试试:[root@localhost ~]# footest function!4. 从另⼀个Shell脚本中读取变量⾸先创建带有⼀些变量的shell脚本,请输⼊:[root@localhost ~]# vim var.sh#!/bin/basha=1b=2c=3[root@localhost ~]# vim read.sh#!/bin/bashsource ~/var.shecho $aecho $becho $c5. 读取并执⾏命令source命令可以从⽂件读取和执⾏命令。
source的用法source的用法1. source的基本含义source在英语中是源头、来源的意思,引申为消息来源、资料来源等。
在计算机领域,source一词表示源代码或配置文件等供计算机程序读取和执行的内容。
2. source作为名词的用法•消息来源(source of information):source常用于指代获取特定信息的来源,例如新闻报道中的消息来源、学术论文中的文献来源等。
•资料来源(source of data):source也可以表示数据的来源,例如调查报告中的数据来源、研究论文中引用的数据来源等。
•音视频来源(source of media):source还可以表示音视频的来源,比如电影、音乐等的制作方或出版商。
3. source作为动词的用法•引用(source):source作为动词时,常用于引用、援引某处信息或数据,用以支持自己的观点或论证。
例如,在研究论文中引用他人的研究成果作为理论基础。
•查找(source):source还可指在某处查找、获取特定信息或数据。
例如,在软件开发中,程序会通过source代码文件来查找特定模块的实现细节。
•读取(source):source也可表示读取某处的内容以供程序执行。
例如,在命令行中使用”source 文件名”命令将配置文件的内容读入当前的shell环境。
•提供(source):source还可用于表示提供或获取特定资源。
例如,在项目开发中,资源文件可以通过source方式提供给代码使用。
4. source的相关搭配词汇•数据源(data source):表示数据的来源,如数据库、文件等。
•信息来源(source of information):指提供、发布消息或信息的来源。
•新闻来源(news source):指发布新闻的媒体机构或个人。
•资源提供者(source provider):指提供特定资源的机构或个人。
以上是关于source的一些常见用法和搭配词汇的详细解释。
Linux终端命令速成source命令的高级用法在Linux系统中,终端命令是我们进行各种操作和管理的重要工具。
其中,source命令是一个非常有用的命令,它可以用于执行脚本文件或者加载环境变量。
本文将介绍source命令的高级用法,以帮助读者更好地使用Linux终端。
一、source命令基本用法在开始探讨source命令的高级用法之前,我们先来了解一下source命令的基本用法。
source命令的格式如下:source filename在这里,filename是要执行的脚本文件的名称。
使用source命令执行脚本文件时,可以不需要给脚本文件加执行权限。
例如,我们有一个名为test.sh的脚本文件,我们可以使用如下命令执行该脚本:source test.sh二、source命令的高级用法除了执行脚本文件外,source命令还有一些高级用法,下面我们将逐一介绍。
1. 加载环境变量在Linux系统中,我们可以设置和使用各种环境变量来帮助我们进行操作和管理。
使用source命令可以加载指定的环境变量文件,以便我们可以在当前终端会话中使用这些环境变量。
要加载环境变量,我们需要创建一个以.sh为后缀的文件,并设置环境变量。
例如,我们创建一个名为env_vars.sh的文件,并将以下内容添加到该文件中:export PATH="/usr/local/bin:$PATH"export JAVA_HOME="/usr/lib/jvm/java-11"之后,我们可以使用source命令加载该环境变量文件:source env_vars.sh加载完环境变量文件后,我们就可以在当前终端会话中使用这些环境变量的值了。
2. 在当前终端会话中执行脚本通常情况下,我们在终端会话中执行脚本时,脚本会在新的子终端中运行,并不能直接影响当前终端的环境。
但是,如果我们使用source命令执行脚本文件,脚本将在当前终端会话中运行,可以直接影响当前终端环境。
SQlYog是一款流行的数据库管理工具,它提供了一些强大的功能,其中就包括了source语句。
在这篇文章中,我们将探讨source语句的作用、用法和一些注意事项。
1. source语句的作用source语句是用来执行SQL脚本文件的命令。
通过source语句,我们可以直接执行一个SQL脚本文件,而无需逐条执行其中的SQL语句。
这对于执行较长或者复杂的SQL脚本文件非常方便,可以节省大量的时间和精力。
2. source语句的用法在SQlYog中,执行source语句非常简单。
我们需要打开一个连接到目标数据库的SQL窗口。
通过点击“文件”菜单中的“执行SQL脚本”选项,选择需要执行的SQL脚本文件,即可完成source语句的执行。
3. source语句的注意事项在使用source语句的过程中,需要注意一些事项,以确保其正常运行。
需要确保所选择的SQL脚本文件是正确的,并且其中的SQL语句是符合语法规范的。
需要确认当前连接的目标数据库是正确的,以避免将SQL脚本文件误操作到其他数据库中。
需要注意SQL脚本文件的大小,过大的文件可能会导致执行时间过长或者执行失败。
总结而言,source语句是SQlYog中一个非常实用的功能,它大大简化了SQL脚本文件的执行过程,提高了工作效率。
然而,在使用source语句时,我们也需要注意一些细节,以确保其顺利执行。
希望本文对您有所帮助,谢谢阅读。
source语句在实际的数据库管理工作中发挥着重要的作用,尤其是在处理大型SQL脚本文件或者需要频繁执行的SQL任务时。
在使用source语句的过程中,我们还需要了解一些更深层次的知识和技巧,以便更好地利用这一功能。
下面,我们将继续探讨source语句的相关内容,包括一些高级用法和常见问题的解决方法。
4. source语句的高级用法除了基本的执行SQL脚本文件功能外,source语句还可以用于更复杂的操作。
在一个SQL脚本文件中,我们可能会使用到一些外部的资源或者其他的SQL脚本文件。
shell重新加载环境变量的方法在Shell中,如果你想重新加载环境变量,通常有几种方法可以做到这一点。
以下是一些常见的方法:1. source命令或点命令:使用`source`命令(在大多数Shell中也可以使用`.`代替`source`)可以直接读取并执行文件中的命令。
如果这个文件是一个配置文件,如`.bashrc`、`.bash_profile`、`.profile`等,那么重新加载环境变量就变得很简单。
```bashsource ~/.bashrc```或者```bash. ~/.bashrc```2. exec命令:使用`exec`命令可以替换当前的shell进程,使用新的配置启动它。
这样,所有的环境变量都会被重新加载。
```bashexec bash```3. 重启终端:这是一种简单但比较笨的方法。
关闭当前的终端窗口并重新打开一个新的终端窗口。
这会加载新的环境变量和配置。
4. 使用env命令:`env`命令会显示当前所有的环境变量。
如果你想查看某个特定的环境变量,你可以这样做:```bashecho $VARIABLE_NAME5. 使用set命令:`set`命令可以显示所有的shell变量(不仅仅是环境变量)。
如果你想查看所有的环境变量,你可以这样做:```bashset -o posix ; set grep ^declare grep -v 'declare' sed 's/declare -x //' grep -v'^\(LS_COLORS\PATH\MANPATH\LESSOPEN\LESSCLOSE\PWD\OLDP WD\IFS\SHELLOPTS\HOME\LOGNAME\)'```这会显示所有的环境变量,并排除一些常见的非环境变量。
6. 使用export命令:你可以使用`export`命令直接设置或修改环境变量的值。
bashshell执⾏⽅式Shell脚本的执⾏⽅式:注明:wd代表“脚本保存的⽬录”1.fork语法:/wd/shell.shfork是最普通的, 就是直接在脚本⾥⾯⽤/wd/shell.sh来调⽤shell.sh这个脚本.运⾏的时候开⼀个⼦shell执⾏调⽤的脚本,⼦shell执⾏的时候,⽗shell还在。
⼦shell执⾏完毕后返回⽗shell。
⼦shell从⽗shell继承环境变量.但是⼦shell中的环境变量不会带回⽗ shell2.exec语法: exec /wd/shell.shexec与fork不同,不需要新开⼀个sub-shell来执⾏被调⽤的脚本. 被调⽤的脚本与⽗脚本在同⼀个shell内执⾏。
但是使⽤exec调⽤⼀个新脚本以后, ⽗脚本中exec⾏之后的内容就不会再执⾏了。
这是exec和source的区别。
3.source语法:source /wd/shell.sh与fork的区别是不新开⼀个⼦shell来执⾏被调⽤的脚本,⽽是在同⼀个shell中执⾏。
所以被调⽤的脚本中声明的变量和环境变量, 都可以在主脚本中得到和使⽤。
4.()语法:( 语句;语句;语句;…… )圆括号中命令列表的命令将会运⾏在⼀个⼦shell中。
⽐如:(cd..;ls−l)cd..命令改变的是⼦Shell的PWD,⽽不会影响到交互式Shell。
然⽽命令 cd ..;ls -l则有不同的效果,cd ..命令是直接在交互式Shell下执⾏的,改变交互式Shell的PWD,然⽽这种⽅式相当于这样执⾏Shell脚本:source./script.sh或者 . ./script.shsource或者.命令是Shell的内建命令,这种⽅式也不会创建⼦Shell,⽽是直接在交互式Shell下逐⾏执⾏脚本中的命令。
source命令、.命令语法: . filename [arguments]source filename [arguments]作⽤:当在命令⾏中调⽤的时候, 这个命令将会执⾏⼀个脚本. 当在脚本中调⽤的时候, source file-name 将会加载file-name⽂件, 或者 . (点命令)⼀个⽂件将会在脚本中引⼊代码, 并将这些代码附加到脚本中(与C语⾔中的#include指令效果相同). 最终的结果就像是在使⽤"source"的⾏上插⼊了相应⽂件的内容.在多个脚本需要引⽤相同的数据, 或者需要使⽤函数库的情况下, 这个命令⾮常有⽤.5.{}{语句;语句;……}不会启动⼦SHELL。
linux的source用法Linux的source命令是一个用于执行Shell脚本的命令。
通过source命令,我们可以在当前Shell环境下执行一个脚本文件,而不是创建一个新的子进程来执行脚本。
本文将介绍Linux的source命令的用法和实例,并探讨它的一些重要特性。
一、source命令的基本用法source命令的基本用法非常简单,只需在命令行中输入source命令,后面跟上要执行的脚本文件的路径即可。
例如:```source /path/to/script.sh```在执行source命令后,脚本文件中的命令将会在当前Shell环境下被执行,也就是说,脚本中定义的变量、函数等将会在当前Shell中生效。
二、source命令与"."命令的区别在Linux中,"."(点号)也可以用来执行脚本文件,与source命令类似。
例如:```. /path/to/script.sh```与source命令不同的是,"."命令在执行脚本时会创建一个子Shell进程来执行脚本文件,而source命令则直接在当前Shell环境下执行脚本,因此source命令执行的脚本中定义的变量和函数就可以在当前Shell中被使用。
三、source命令的特性1. 永久修改环境变量使用source命令执行修改环境变量的脚本文件时,修改结果将会在当前Shell环境中生效,并且能够一直保持下去,而不仅仅是在脚本执行结束后临时生效。
2. 脚本文件无需执行权限使用source命令执行脚本文件时,脚本文件不需要具有可执行权限,只需要对脚本文件具有读权限即可。
3. 加载外部脚本库在编写Shell脚本时,我们可以将一些通用的函数或配置放在外部脚本库中,然后通过source命令将这些脚本库加载到当前Shell环境中,以供脚本文件使用。
四、source命令的实例下面通过几个实例来演示source命令的用法。
Shell脚本的三种执⾏⽅式Shell脚本的执⾏⽅式可以有以下⼏种:⽅式⼀:./script.sh # 利⽤⼩数点来执⾏⽅式⼆:sh script.sh 或 bash script.sh # 利⽤bash(sh)来执⾏脚本前⾯两种⽅式其实都是⼀样的:都是在当前⽗进程下的⼦进程中执⾏,⼦进程完成后,⼦进程中的各项变量或操作将会结束⽽不会传回到⽗进程中.举例来说:可以看到,执⾏后再看脚本中两个变量,在⽗进程中不起作⽤!备注: 如果在script2.sh⽂件⾥⾯执⾏script1.sh的脚本,那么就是执⾏. ./script1.sh [中间有空格]⽅式三:source script.sh 或 . liqiang.sh# 利⽤⼩数点来执⾏⽽通过第三种⽅式执⾏(source test.sh)的话,在⽗进程中就起作⽤了:这就是直接执⾏与⽤source命令执⾏的区别,前者只作⽤于⼦进程本⾝,后者则作⽤于整个⽗进程。
因此:如要想不注销系统,并让全局配置⽂件⽣效,则必须⽤source命令:⽐如说: 在全局配置⽂件中/etc/profile添加了JAVA_HOME,要让他对整个环境⽣效export JAVA_HOME=/usr/java/jdk1.7.0_75就必须执⾏source /etc/profile注意:在执⾏时要赋权限chmod a+x liqiang.sh #赋权限chmod a+x script-name补充知识点:⼀个规范的Shell脚本在第⼀⾏会指出由哪个程序(解释器)来执⾏脚本中的内容,这⼀⾏内容在Linux bash的编程⼀般为:#!/bin/bash或#!/bin/sh注意:(1)在Shell中如果⼀⾏的第⼀个字母是#,则是注释,但是上⾯两个是写在第⼀⾏,所以不是脚本注释⾏,如果写在某个命令之后,则变成注释⾏。
(2)sh为bash的软链接,⼤多数情况下,脚本的开头使⽤“#!/bin/bash”和“#!/bin/sh”是没有区别的,但更规范的写法是在脚本的开头使⽤“#!/bin/bash”。
sourcegit用法在开发项目中,版本控制和代码管理是非常重要的环节。
Git作为目前世界上最流行的分布式版本控制系统,广泛应用于软件开发和维护中,为程序员们提供了非常便捷的协作和管理手段。
在Git中,sourcegit是一个十分实用的命令,下面我们来介绍一下它的用法。
1. 查看源代码在Git中,sourcegit命令可以直接查看源代码,包括文件的修改记录和差异,非常适合程序员们进行版本追踪和比较。
使用如下:```sourcegit show [file path]```其中的[file path]是指要查看的文件路径。
如果想要查看某个提交的修改记录,可以加上commit SHA值:```sourcegit show [commit SHA值]:[file path]```2. 修改历史记录在使用Git进行代码协作和版本管理时,有时候需要对提交的历史记录进行修改或者删除。
sourcegit命令可以在这方面提供很好的支持,使用如下:```sourcegit rebase -i [commit SHA值]```其中的[commit SHA值]是指要修改的提交的哈希值。
在这个命令的交互界面中,你可以对每个提交进行单独编辑,包括修改提交信息、移除某个提交或者合并多个提交。
3. 比较提交除了查看源代码之外,sourcegit还可以用来比对提交内容之间的差异,并提供标记和注释功能。
使用如下:```sourcegit diff [commit SHA值1] [commit SHA值2]```其中的[commit SHA值1]和[commit SHA值2]是指要比较的两个提交的哈希值。
sourcegit会将这两个提交之间不同的内容标记出来,并提供解释和备注功能。
4. 分支管理在Git中,分支管理是非常重要和复杂的功能。
sourcegit命令可以帮助我们更好的处理分支之间的关系,并进行合并、重叠等操作。
使用如下:```sourcegit branch [分支名] [基准分支名]```其中的[分支名]是指要创建或者切换的分支名字,[基准分支名]是指要基于哪个分支来创建或切换。
powershell 中类似 source的命令在PowerShell中,我们常常需要执行一系列的命令或脚本文件来完成一项任务。
有时候,我们需要在当前的脚本中加载另一个脚本或者函数,以便复用已有的功能。
在其他编程语言中,我们可以使用"source"或者". "(点加空格)来实现这个功能。
那么在PowerShell中,有没有类似的命令呢?答案是有的,它就是"dot sourcing"命令。
在PowerShell中,如果我们要加载并执行另一个脚本文件或者函数,可以使用"."命令(点加空格),也就是dot sourcing命令。
这个命令类似于其他编程语言中的"source"命令,可以将另一个文件中的代码加载到当前的执行环境中,从而实现脚本的复用。
要使用dot sourcing命令,我们可以在当前脚本中使用以下语法:```. <脚本文件路径>```这里的"<脚本文件路径>"是指要加载的脚本文件的路径,可以是相对路径或者绝对路径。
使用相对路径时,可以使用"."表示当前目录,也可以使用".."表示上级目录。
使用绝对路径时,需要指定脚本文件的完整路径。
使用dot sourcing命令时,需要注意以下几点:1. 加载的脚本文件必须是PowerShell脚本文件(扩展名为.ps1),或者是包含函数定义的脚本文件。
不能使用其他类型的文件进行dot sourcing。
2. 被加载的脚本文件中定义的函数或者脚本块会在当前脚本中变为可用。
我们可以直接调用这些函数或者脚本块,而无需再次定义。
3. 被加载的脚本文件中的变量将与当前脚本共享。
这意味着,如果在被加载的脚本文件中定义了一个变量,在dot sourcing之后,我们可以直接在当前脚本中使用这个变量。
source命令与“.”点命令
source 命令是bash shell 的内置命令,从C Shell 而来。
source 命令的另一种写法是点符号,用法和source 相同,从Bourne Shell而来。
source 命令可以强行让一个脚本去立即影响当前的环境。
source 命令会强制执行脚本中的全部命令,而忽略文件的权限。
source 命令通常用于重新执行刚修改的初始化文件,如.bash_profile 和.profile 等等。
source 命令可以影响执行脚本的父shell的环境,而export 则只能影响其子shell的环境。
使用方法举例:
$source ~/.bashrc
或者:
$. ~/.bashrc
执行后~/.bashrc 中的内容立即生效。
一个典型的用处是,在使用Android 的mm 等相关命令时,需要先执行以下命令:$cd <android source path>
$source ./build/envsetup.sh 或者$. ./build/envsetup.sh
source命令(从C Shell 而来)是bash shell的内置命令。
点命令,就是个点符号,(从Bourne Shell而来)是source的另一名称。
同样的,当前脚本中设置的变量也将作为脚本的环境,source(或点)命令通常用于重新执行刚修改的初始化文件,如.bash_profile 和.profile 等等。
例如,如果在登录后对.bash_profile 中的EDITER 和TERM 变量做了修改,则能用source 命令重新执行.bash_profile 中的命令而不用注销并重新登录。
source命令的作用就是用来执行一个脚本,那么:
source a.sh 同直接执行./a.sh 有什么不同呢,比如你在一个脚本里export $KKK=111 ,如果你用./a.sh执行该脚本,执行完毕后,你运行echo $KKK ,发现没有值,如果你用source 来执行,然后再echo ,就会发现KKK=111。
因为调用./a.sh来执行shell是在一个子shell里运行的,所以执行后,结果并没有反应到父shell里,不过source不同,他就是在本shell 中执行的,所以能看到结果。
“.”点命令是shell的一个内部命令,它从指定的shell 文件中读入所有命令语句并在
当前进程中执行。
因此当多个shell进程(父子进程或无关进程均可)共享一组变量值时,就可以将这些变量赋值语句定义到一个shell文件里,并在需要这些变量值的程序中使用点语句来引用这个shell文件,从而实现变量值共享(对这些变量值的修改仅涉及到这个shell 文件)。
但要注意的是,这个shell文件不能包括含有位置参数的语句,即不能接受$1、$2等命令行参数。
从上面可以看出,其实点命令相当于c语言里面的#include。
点命令还有另一个写法:source。
下面我们将举例来说明。
我们先写一个简单的shell脚本文件,暂且命名为file1吧:
#! /bin/bash
a="hi"
echo $a
我们先来执行一下这个shell脚本,打开终端,敲入:./file1
结果是什么,你应该也看到了吧:
bash: ./file1: Permission denied
为什么呢。
我们先不管这个吧,先看一下,另一个结果:
. ./file1(注意啊,两个点之间有个空格的哦,要不就成了上一级目录了,如果你不嫌麻烦的话,也可以写source ./file1)这个的结果呢,跟前面就不一样了,正如我们所愿的,输出了hi。
./file1,直接执行,需要另起shell进程,而你似乎还没有这个权限(这个改一下就OK 了,后面再说),而用点命令就不一样了(注意啊,./file这里的点可不是点命令里的点啊,我就被这个问题困扰了很久,汗死,竟然忘了点还有当前目录的意思,大家b4我吧),点命令会在当前的shell下执行。
补充说一下怎么改一下file1的权限,让我们可以在按shell脚本来执行:chmod +x file1
再执行一下./file1,是不是OK了?再来看另一个例子吧。
首先脚本文件file1
#! /bin/bash
a="hi"
脚本文件file2(与file1在同一个目录下)
#! /bin/bash
./file1
echo $a
记得改一下file1的权限啊,要不./file1就没法执行了。
执行一下看看结果。
什么都没有,是吧。
我们再改一下file2,这回用一下咱们的点命令
#! /bin/bash
. ./file1
echo $a
怎么样结果不一样了吧。
(原谅我实在太懒了,只能举这么简短的例子了,呵呵)。
这个例子应该还是能说明点问题的吧。
如果不用点命令的话,会另起shell进程,而启动这个进行的时候,它会建立自己的进程环境(暂且这么叫它吧),然后在这个进行结束的时候,它所建立的环境也随之被销毁。
而且点命令就不一样了,它会把点命令所带的shell脚本里的所以内容带到当前的shell进程里,在本程序里,就是变量a了。
废话了这么多,其实好像把点命令想像成C里的#include就OK了,呵呵。
不过经过这么折腾,还是学到了一点东西的,至少知道了.不仅有点命令的作用,更有当前目录的意思(冷啊,该补一下linux基础了)。
为什么在shell脚本里面export的环境变量,在set里面竟然看不到。
为什么在shell脚本里面用export设置环境变量之后,当shell执行完了,用set命令看不到呢?但是你如果直接在终端里export 环境变量用set是看到的。
一个shell脚本test.sh的内容为:
#!/bin/bash
export AA=123
当我们执行test.sh的时候,是当前终端所在的shell fork一个子shell然后执行test.sh的,执行完了再返回终端所在的shell。
明白这点,就容易理解了,我们在test.sh设置了AA环境变量,它只在fork出来的这个子shell中生效,子shell只能继承父shell的环境变量,而不能修改父shell的环境变量,所以test.sh结束后,父进程的环境就覆盖回去。
所以在test.sh 之后完之后,我们用set命令是看不了AA这个环境变量的值的。
那有什么办法可以让脚本的环境变量在脚本执行之后仍然对当前终端存在呢?用sorcue 或者.(dot) 。
明确告诉shell不要fork执行脚本,而是在当前的shell执行,这样环境变量就可以保存下来了。
source命令用法:
source Filename (通常用“.”来代替)
source test.sh 与.test.sh是等效的。
【补充】
source命令与shell scripts的区别是,
source在当前bash环境下执行命令,而scripts是启动一个子shell来执行命令。
这样如果把设置环境变量(或alias等等)的命令写进scripts中,就只会影响子shell,无法改变当前的BASH,所以通过文件(命令列)设置环境变量时,要用source 命令。