- 浏览: 273775 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
Xujian0000abcd:
说的太好啦~赞一个~
shell if语句中的并列 -
Jimmy.song:
终于在楼主这里找到答案,很受益,谢谢~
使用diff或者vimdiff比较远程文件(夹)与本地文件(夹)
source [filename] 不再产生新的shell,而在当前shell下执行一切命令。
Read and execute commands from filename in the current shell environment and return the exit status of the last
command executed from filename. If filename does not contain a slash, file names in PATH are used to find the
directory containing filename. The file searched for in PATH need not be executable. When bash is not in posix
mode, the current directory is searched if no file is found in PATH. If the sourcepath option to the shopt
builtin command is turned off, the PATH is not searched. If any arguments are supplied, they become the posi-
tional parameters when filename is executed. Otherwise the positional parameters are unchanged. The return
status is the status of the last command exited within the script (0 if no commands are executed), and false if
filename is not found or cannot be read.
比如您在一个脚本里export $KKK=111 ,假如您用./a.sh执行该脚本,执行完毕后,您运行 echo $KKK
,发现没有值,假如您用source来执行 ,然后再echo
,就会发现KKK=111。因为调用./a.sh来执行shell是在一个子shell里运行的,所以执行后,结构并没有反应到父shell里,但是
source不同他就是在本shell中执行的,所以能够看到结果
举例:
lu1() {
echo 'aaaaaaaaa'
}
lu2() {
echo 'bbbbbbbbb'
}
上面就是,run.sh的源码了,可以看到只有2个函数定义没有任何地方来调用这两个函数,那么我们如果这样执行:
luther@gliethttp:~$ ./run.sh
luther@gliethttp:~$
可以看到什么都没有,因为没有地方调用这2个函数,我们希望在我们的luther@gliethttp:~$ 提示符后面调用这2个函数,来试试,
luther@gliethttp:~$ lu1
bash: lu1: command not found
luther@gliethttp:~$ lu2
bash: lu2: command not found
luther@gliethttp:~$
结果都提示找不到命令,是不是我们的这个需求shell还不提供支持呢,当然不是,这样有用的需求shell早就为我们做好解决方案了,来看看怎么实现,
shell中有2个命令可以完成我们的工作,一个是source另一个就是和source等效的.逗号运算符:
luther@gliethttp:~$ . run.sh或者luther@gliethttp:~$source run.sh
这样我们run.sh脚本中创建的变量和函数就添加到了执行.或source的shell,直到关闭该shell窗口,否则run.sh中创建的变量和函数将一直有效,
如果我们只是执行./run.sh启动一个subshell来运行我们的run.sh脚本,那么run.sh脚本中的变量和函数将紧紧影响到由shell启动的subshell,当./run.sh脚本退出之后,run.sh变量和函数的影响寿命也到了尽头。
来看看现在的现象:
luther@gliethttp:~$ ./run.sh
luther@gliethttp:~$ lu1
bash: lu1: command not found
luther@gliethttp:~$ lu2
bash: lu2: command not found
luther@gliethttp:~$ . run.sh
luther@gliethttp:~$ lu1
aaaaaaaaa
luther@gliethttp:~$ lu2
bbbbbbbbb
luther@gliethttp:~$
重新启动一个新shell:
luther@gliethttp:~$ ./run.sh
luther@gliethttp:~$ lu1
bash: lu1: command not found
luther@gliethttp:~$ lu2
bash: lu2: command not found
luther@gliethttp:~$ source run.sh
luther@gliethttp:~$ lu1
aaaaaaaaa
luther@gliethttp:~$ lu2
bbbbbbbbb
luther@gliethttp:~$
1、执行脚本时是在一个子shell环境运行的,脚本执行完后该子shell自动退出。2、一个shell中的系统环境变量才会被复制到 子shell中(用export定义的变量);3、一个shell中的系统环境变量只对该shell或者它的子shell有效,该shell结束时变量消 失(并不能返回到父shell中)。3、不用export定义的变量只对该shell有效,对子shell也是无效的。
不管怎么设置,不会多层继承,对子子shell是没任何用的。
Read and execute commands from filename in the current shell environment and return the exit status of the last
command executed from filename. If filename does not contain a slash, file names in PATH are used to find the
directory containing filename. The file searched for in PATH need not be executable. When bash is not in posix
mode, the current directory is searched if no file is found in PATH. If the sourcepath option to the shopt
builtin command is turned off, the PATH is not searched. If any arguments are supplied, they become the posi-
tional parameters when filename is executed. Otherwise the positional parameters are unchanged. The return
status is the status of the last command exited within the script (0 if no commands are executed), and false if
filename is not found or cannot be read.
比如您在一个脚本里export $KKK=111 ,假如您用./a.sh执行该脚本,执行完毕后,您运行 echo $KKK
,发现没有值,假如您用source来执行 ,然后再echo
,就会发现KKK=111。因为调用./a.sh来执行shell是在一个子shell里运行的,所以执行后,结构并没有反应到父shell里,但是
source不同他就是在本shell中执行的,所以能够看到结果
举例:
lu1() {
echo 'aaaaaaaaa'
}
lu2() {
echo 'bbbbbbbbb'
}
上面就是,run.sh的源码了,可以看到只有2个函数定义没有任何地方来调用这两个函数,那么我们如果这样执行:
luther@gliethttp:~$ ./run.sh
luther@gliethttp:~$
可以看到什么都没有,因为没有地方调用这2个函数,我们希望在我们的luther@gliethttp:~$ 提示符后面调用这2个函数,来试试,
luther@gliethttp:~$ lu1
bash: lu1: command not found
luther@gliethttp:~$ lu2
bash: lu2: command not found
luther@gliethttp:~$
结果都提示找不到命令,是不是我们的这个需求shell还不提供支持呢,当然不是,这样有用的需求shell早就为我们做好解决方案了,来看看怎么实现,
shell中有2个命令可以完成我们的工作,一个是source另一个就是和source等效的.逗号运算符:
luther@gliethttp:~$ . run.sh或者luther@gliethttp:~$source run.sh
这样我们run.sh脚本中创建的变量和函数就添加到了执行.或source的shell,直到关闭该shell窗口,否则run.sh中创建的变量和函数将一直有效,
如果我们只是执行./run.sh启动一个subshell来运行我们的run.sh脚本,那么run.sh脚本中的变量和函数将紧紧影响到由shell启动的subshell,当./run.sh脚本退出之后,run.sh变量和函数的影响寿命也到了尽头。
来看看现在的现象:
luther@gliethttp:~$ ./run.sh
luther@gliethttp:~$ lu1
bash: lu1: command not found
luther@gliethttp:~$ lu2
bash: lu2: command not found
luther@gliethttp:~$ . run.sh
luther@gliethttp:~$ lu1
aaaaaaaaa
luther@gliethttp:~$ lu2
bbbbbbbbb
luther@gliethttp:~$
重新启动一个新shell:
luther@gliethttp:~$ ./run.sh
luther@gliethttp:~$ lu1
bash: lu1: command not found
luther@gliethttp:~$ lu2
bash: lu2: command not found
luther@gliethttp:~$ source run.sh
luther@gliethttp:~$ lu1
aaaaaaaaa
luther@gliethttp:~$ lu2
bbbbbbbbb
luther@gliethttp:~$
1、执行脚本时是在一个子shell环境运行的,脚本执行完后该子shell自动退出。2、一个shell中的系统环境变量才会被复制到 子shell中(用export定义的变量);3、一个shell中的系统环境变量只对该shell或者它的子shell有效,该shell结束时变量消 失(并不能返回到父shell中)。3、不用export定义的变量只对该shell有效,对子shell也是无效的。
不管怎么设置,不会多层继承,对子子shell是没任何用的。
发表评论
-
shell 查找文件中包含中文的行
2012-08-15 14:32 2959awk '/[^!-~]/' file asscii码从!到 ... -
Linux Shell for循环写法总结
2012-07-05 15:48 2357关于shell中的for循环用法很多,一直想总结一下,今天网上 ... -
Linux Shell删除两个文件相同部分
2012-07-04 11:22 2343转来的,原址http://www.cnblogs.com/ra ... -
保留字符串中的数字,其它全去掉
2012-03-15 11:26 3584把2007.10.30 16:00:00去掉".&q ... -
sed 用法解释
2011-10-28 14:29 9961.Sed命令 调用sed命令有 ... -
df 和 du 命令详解
2011-09-27 14:59 997df命令详细用法 a:显 ... -
shell tr命令的使用
2011-09-15 10:30 44724tr是translate的简写,亦 ... -
Useful Shell Option – extglob 和 shopt命令
2011-09-14 10:45 3409Bash Shell有个extglob选项 ... -
Bash 自带的字符截断功能
2011-09-02 15:51 1179如果是一般路径的字符截断可以用basename和dirname ... -
Du命令功能说明
2011-08-24 10:01 1000Du命令功能说明:统计 ... -
环境变量
2011-08-22 16:58 811配置环境变量一般需要两个文件 举例: 第一个文件,文件名.p ... -
shell 小括号的问题
2011-08-09 18:09 2425http://www.linuxsir.org/bbs/thr ... -
使用diff或者vimdiff比较远程文件(夹)与本地文件(夹)
2011-08-09 14:53 8044方法1:管道给diff $ssh eric@192.168 ... -
shell里面的特殊字符
2011-08-05 17:15 5111常见的有美元符号($),反斜线(\)和引号。 1。美元符号 ... -
shell 打开文件
2011-08-04 17:43 5765我们都知道shell语句可以执行主程序打开某一文件,比如c:盘 ... -
shell 读取文章行数
2011-08-04 17:42 1104总结了一下有六种方法: 现在有一个a文件,共有55行 ... -
shell uniq
2011-07-22 17:51 1615uniq 命令 文字 uniq是LINUX命令 ... -
shell if语句中的并列
2011-07-21 17:38 29536格式如下,在比较时,数字和字符串用不同的比较符号 1.如果a ... -
shell判断:数值、字符串、文件
2011-07-21 17:34 2306(1)数值测试: -eq 等于则为真。 -ne 不 ... -
shell 有关命令行参数
2011-07-21 17:32 2132通常调用UNIX程序的格式是: command options ...
相关推荐
至于提供的`Mysql命令行下用source命令导入sql文件.jpg`,这可能是一个截图,展示了执行`source`命令前后的数据库状态,帮助用户理解导入过程和结果。由于这是一个图片,我们无法直接查看其内容,但通常它会显示...
Linux 的 source 命令是一种常用的命令,用于读取并执行指定文件中的命令,但是有时候在使用 source 命令时,可能会出现找不到命令的情况。今天我们将为大家介绍 Linux 的 source 命令找不到的解决方法。 问题描述 ...
source命令(从 C Shell 而来)是bash shell的内置命令。点命令,就是个点符号,(从Bourne Shell而来)是source的另一名称。 source命令通常用于重新执行刚修改的初始化文件,使之立即生效,而不必注销并重新登录。...
### Source命令与“.”点命令详解 #### 一、引言 在Linux系统及类Unix环境中,`source`命令和“.”(点)命令是非常重要的工具,它们主要用于在当前shell环境中执行另一个脚本文件,这对于配置环境变量、加载自定义...
标题中的“命令ping的源代码.rar_windowssource命令_网络测_网络连接”指的是这个压缩包文件包含了Windows操作系统中ping命令的源代码,这对于我们理解ping命令的工作原理以及如何实现网络连接测试至关重要。...
Linux 的 source 命令找不到解决方法 Linux 系统中,source 命令是一个非常常用的命令,用于读取和执行指定文件中的命令。然而,有时候我们可能会遇到 source 命令找不到的情况,今天我们就来讨论这个问题。 问题...
### Linux下的source命令详解 #### 一、概述 在Linux环境下,`source`命令是一个非常实用的工具,尤其是在处理shell脚本和环境配置文件时。本文将深入探讨`source`命令的功能、用法以及与其他执行脚本方式的区别,...
MySQL 数据库的 `source` 命令是一个非常实用的工具,主要用于批量执行 SQL 脚本文件,常用于数据导入、数据库初始化或者更新数据库结构等场景。在本篇文章中,我们将深入探讨 `source` 命令的使用方法、注意事项...
通过Mysql Source命令能够将SQL文件导入Mysql数据库中,下面通过Mysql导入导出SQL实例详解Mysqldump和Source命令的用法。 Mysql命令行导出工具Mysqldump命令详解 Mysql命令行导出工具Mysqldump.e
1. **source命令的基本用途** - 当你需要更新Shell环境,如修改了`.bashrc`、`.bash_profile`或`/etc/profile`等初始化文件后,`source`命令可以让你无须注销并重新登录即可应用更改。例如,`source ~/.bashrc`会...
1. **source命令**: `source FileName` 或 `. FileName`(点号也可用作source的同义词)的作用是在当前的bash环境中读取并执行文件`FileName`中的命令。这意味着,所有在`FileName`中定义的变量、函数和命令都会...
* source 命令:用于使环境变量生效。 Java 版本 * java -version 命令:用于查看当前 Java 版本。 防火墙配置 * /etc/sysconfig/iptables 文件:用于配置 Linux 系统的防火墙。 * iptables 服务:用于启动和...
例如,在上面的解决方法中,我们使用 `export` 命令来设置环境变量,然后使用 `source` 命令来使环境变量生效: `source /etc/profile.d/java.sh` 这样可以使得环境变量生效,系统可以正确地找到命令。 结论 ...
因此,本篇将详细介绍PF Source命令面板中的各项参数及其用法。 --- ### 1. 创建PF Source(粒子流来源) - **步骤一**:在命令面板上点击Geometry按钮,在下拉列表中选择Particle Systems项。 - **步骤二**:...
MySQL的`source`命令是数据库管理员经常使用的工具,用于快速导入大体积的SQL脚本文件,这在数据恢复、数据库初始化或数据迁移等场景中非常有用。本文将深入讲解如何利用`source`命令高效地导入大型SQL文件。 首先...