UNIX/solaris shell 包含文件中的脚本 shebang
UNIX/solaris shell script shebang in include file
我有一个 functions.sh 脚本,其中包含一些我想在其他脚本中使用的全局函数。这个函数脚本写在 bash (#!/bin/bash)
那么多脚本是多年来编写的,所以较旧的脚本或带有 #!/bin/sh(与 solaris 中的 #!/bin/bash 不同)。
我的问题是,当您从 sh(不是 bash)脚本中调用 functions.sh 文件(带有 . /path/to/functions.sh)时,shebang 行是"functions.sh" 解释了吗?
简而言之shell,你能从另一个 shell 类型的脚本(两者都有适当的 shebang 行)调用一个 bash 编写的函数脚本吗?
谢谢!
只要你想使用你需要来源脚本的功能,而不是执行它
source /path/to/functions.sh
或根据 POSIX
标准,
. ./path/to/functions.sh
来自 sh
脚本,相当于在命令为 运行 的位置将 function.sh 的内容包含在文件中。
您需要了解采购和执行脚本之间的区别。
Sourcing 运行s 脚本来自 parent-shell 其中脚本是
调用;所有的环境变量,函数都保留到
parent-shell 终止(终端关闭,或者变量
被重置或取消设置),
Execute 从父 shell 和那些变量、函数中分叉出一个新的 shell
包括您的导出变量仅保留在 sub-shell 中
环境并在脚本终止结束时销毁。
当您获取一个文件时,该文件中的 shebang 将被忽略(它不在第一行,因为它包含在调用者脚本中并被视为注释)。
当您包含带有 #!/bin/sh
的旧脚本时,它将作为调用者的 shell 处理。在 /bin/sh
中编写的大部分内容在 bash
中都可以使用。
当您是 运行 sh 或 ksh 脚本并包含 (source
) bash 文件时,所有 bash 特定代码都会产生问题。
我有一个 functions.sh 脚本,其中包含一些我想在其他脚本中使用的全局函数。这个函数脚本写在 bash (#!/bin/bash)
那么多脚本是多年来编写的,所以较旧的脚本或带有 #!/bin/sh(与 solaris 中的 #!/bin/bash 不同)。
我的问题是,当您从 sh(不是 bash)脚本中调用 functions.sh 文件(带有 . /path/to/functions.sh)时,shebang 行是"functions.sh" 解释了吗?
简而言之shell,你能从另一个 shell 类型的脚本(两者都有适当的 shebang 行)调用一个 bash 编写的函数脚本吗?
谢谢!
只要你想使用你需要来源脚本的功能,而不是执行它
source /path/to/functions.sh
或根据 POSIX
标准,
. ./path/to/functions.sh
来自 sh
脚本,相当于在命令为 运行 的位置将 function.sh 的内容包含在文件中。
您需要了解采购和执行脚本之间的区别。
Sourcing 运行s 脚本来自 parent-shell 其中脚本是 调用;所有的环境变量,函数都保留到 parent-shell 终止(终端关闭,或者变量 被重置或取消设置),
Execute 从父 shell 和那些变量、函数中分叉出一个新的 shell 包括您的导出变量仅保留在 sub-shell 中 环境并在脚本终止结束时销毁。
当您获取一个文件时,该文件中的 shebang 将被忽略(它不在第一行,因为它包含在调用者脚本中并被视为注释)。
当您包含带有 #!/bin/sh
的旧脚本时,它将作为调用者的 shell 处理。在 /bin/sh
中编写的大部分内容在 bash
中都可以使用。
当您是 运行 sh 或 ksh 脚本并包含 (source
) bash 文件时,所有 bash 特定代码都会产生问题。