我正在Mac上学习UNIX命令。我已经配置了Bash(我知道zsh更好,但我做了Bash遵循教程,所以请不要建议切换到zsh).我写了一个脚本在/Users/dw/bin/hello.txt .我想我需要改变权限之前,我可以执行脚本,但我实际上能够运行bash hello.txt并获得预期的输出,而无需更改该文件的权限。该文件的权限是rw-r--r--。知道为什么我能够在hello.txt中执行脚本吗不做chmod和添加a+x等等?
/Users/dw/bin/hello.txt
bash hello.txt
rw-r--r--
hello.txt
chmod
a+x
xriantvc1#
你不是在执行文件。你是在执行bash并传递文件。然后Bash将读取文件并逐行运行它。要执行文件本身,必须输入./hello.txt(如果文件没有设置x位,则此操作将失败)。以这种方式执行它也会遵守shebang行(如果指定的话)。运行bash hello.txt将始终使用bash运行它,即使shebang指定了不同的解释器(例如sh或python)。
bash
./hello.txt
x
sh
python
1条答案
按热度按时间xriantvc1#
你不是在执行文件。你是在执行
bash
并传递文件。然后Bash将读取文件并逐行运行它。要执行文件本身,必须输入
./hello.txt
(如果文件没有设置x
位,则此操作将失败)。以这种方式执行它也会遵守shebang行(如果指定的话)。运行
bash hello.txt
将始终使用bash运行它,即使shebang指定了不同的解释器(例如sh
或python
)。