我有几点想了解:我有一个用 bash 语法编写的脚本,不包含 shebang 行 (#!/bin/bash),我的默认 shell 是 tcsh。
- 当授予文件执行权限并通过键入文件的完整路径在默认 shell (tcsh) 中运行它时,它可以正确运行。脚本如何在 tcsh 中正确运行且无需键入 shebang 行?
- 对于默认 shell tcsh 中的同一文件,如果我使用 source 命令运行它,它会给出语法错误(即使我使用了 shebang bash 行)为什么?
经过一些试验后,我发现以下内容:谢谢,这似乎是正确的- 使用当前 shell 运行它,而与 shebang 行无关 - 如果 shebang 行存在并且通过键入其名称(总路径)运行文件(此处需要执行权限),则使用 shebang 行中的 shell 运行文件。如果 shebang 行不存在并且按名称运行,则在我的情况下始终使用 bash,而与当前 shell 无关。我不知道为什么,是因为 bash 在 /bin 文件中排在第一位吗??????你能和我一起检查一下吗
如果可执行脚本没有 shebang 行,则由
/bin/sh
. 如果你source
用来执行它,它会在当前 shell 中运行: