有没有办法在shell脚本中包含另一个shell脚本才能访问其功能?
就像在PHP中一样,你可以将include
指令与其他PHP文件一起使用,以便通过调用函数名来运行其中包含的函数。
答案 0 :(得分:154)
简单地放入你的脚本:
source FILE
或者
. FILE
这是一回事。
$ LANG=C help source
source: source filename [arguments]
Execute commands from a file in the current shell.
Read and execute commands from FILENAME in the current shell. The
entries in $PATH are used to find the directory containing FILENAME.
If any ARGUMENTS are supplied, they become the positional parameters
when FILENAME is executed.
Exit Status:
Returns the status of the last command executed in FILENAME; fails if
FILENAME cannot be read.
答案 1 :(得分:30)
是的,使用source或仅.
的简短形式:
. other_script.sh
答案 2 :(得分:27)
以上答案是正确的,但如果在其他文件夹中运行脚本,则会出现问题。
例如,a.sh
和b.sh
位于同一文件夹中,
a包括. ./b.sh
包括b。
当从文件夹中运行脚本时,例如使用xx/xx/xx/a.sh
,文件b.sh
将找不到:./b.sh: No such file or directory
。
我用
. $(dirname "$0")/b.sh
答案 3 :(得分:4)
语法为source <file-name>
例如source config.sh
脚本-config.sh
USERNAME="satish"
EMAIL="satish@linuxconcept.com"
通话脚本-
#!/bin/bash
source config.sh
echo Welcome ${USERNAME}!
echo Your email is ${EMAIL}.
答案 4 :(得分:0)
在我的情况下,为了将color.sh
中相同目录中的init.sh
包括在内,我必须执行以下操作。
. ./color.sh
不确定为什么直接使用./
而不是color.sh
。 color.sh
的内容如下。
RED=`tput setaf 1`
GREEN=`tput setaf 2`
BLUE=`tput setaf 4`
BOLD=`tput bold`
RESET=`tput sgr0`
使用File color.sh
不会出错,但是颜色不会显示。我已经在Ubuntu 18.04
中对此进行了测试,而Bash
的版本是:
GNU bash, version 4.4.19(1)-release (x86_64-pc-linux-gnu)