什么是 SH 之间的差异,源?
来源:源文件名[参数] 读取和文件名,并返回执行命令。路径名 在$ PATH用于查找包含路径文件名。如果有任何 提供参数,成为他们的位置参数时, 文件名被执行。和对男人SH :
NAME 庆典 - GNU的Bourne Again Shell的概要 bash的[选项] [文件]版权 Bash是版权所有(C)1989-2004自由软件基金会,公司描述 Bash是一个sh兼容的命令语言间preTER是执行从标准输入或从文件中读取命令。 Bash也整合 从Korn和C shell的实用功能(KSH和csh)。 庆典旨在成为符合了IEEE POSIX壳牌和工具规范(IEEE 1003.2工作组)的。解决方案
当你调用源(或其别名。),你的插入的在电流的bash进程的脚本。所以你可以读由脚本设置变量。
当你调用 SH ,你发起的叉的(子进程)运行的一个新的会话 / bin / sh的,这通常是一个符号链接庆典。在这种情况下,当子脚本完成由子脚本中设置的环境变量将被丢弃。
注意: SH 可能是一个符号链接的其他的壳
一个小样本例如,如果你想改变的当前工作目录的由一个特定的方式,你不能这样做。
猫<<&EOF GT; myCd2Doc.sh#!/ bin / sh的CD的/ usr /共享/ DOCEOF搭配chmod + X myCd2Doc.sh这不会做你所期望的:
CD / tmp目录PWD/ tmp目录〜/ myCd2Doc.shPWD/ tmp目录由于的当前工作目录的是环境的一部分, myCd2Doc.sh 将在子shell 的运行。
不过:
猫> myCd2Doc.source<< EOF#壳牌源文件myCd2Doc(){ CD的/ usr /共享/ DOC}EOF。 myCd2Doc.sourceCD / tmp目录PWD/ tmp目录myCd2DocPWD在/ usr /共享/ DOC我写的一个小样本的 mycd 的功能。
What is the difference between sh and source?
source: source filename [arguments] Read and execute commands from FILENAME and return. The pathnames in $PATH are used to find the directory containing FILENAME. If any ARGUMENTS are supplied, they become the positional parameters when FILENAME is executed.And for man sh:
NAME bash - GNU Bourne-Again SHell SYNOPSIS bash [options] [file] COPYRIGHT Bash is Copyright (C) 1989-2004 by the Free Software Foundation, Inc. DESCRIPTION Bash is an sh-compatible command language interpreter that executes commands read from the standard input or from a file. Bash also incorporates useful features from the Korn and C shells (ksh and csh). Bash is intended to be a conformant implementation of the IEEE POSIX Shell and Tools specification (IEEE Working Group 1003.2).解决方案
When you call source (or its alias .), you insert the script in the current bash process. So you could read variables set by the script.
When you call sh, you initiate a fork (sub-process) that runs a new session of /bin/sh, which is usually a symbolic link to bash. In this case, environment variables set by the sub-script would be dropped when the sub-script finishes.
Caution: sh could be a symlink to another shell.
One little sampleFor example, if you want to change current working directory by a specific manner, you could not do
cat <<eof >myCd2Doc.sh #!/bin/sh cd /usr/share/doc eof chmod +x myCd2Doc.shThis won't do what you expect:
cd /tmp pwd /tmp ~/myCd2Doc.sh pwd /tmpbecause current working dir is part of environment and myCd2Doc.sh would run in a subshell.
But:
cat >myCd2Doc.source <<eof # Shell source file myCd2Doc() { cd /usr/share/doc } eof . myCd2Doc.source cd /tmp pwd /tmp myCd2Doc pwd /usr/share/docI wrote a small sample of mycd function.
更多推荐
是什么`sh`和`source`之间的区别?
发布评论