bash - 有什么作用。 在bash中是什么意思?
问题描述
尝试运行脚本文件时。我看到的是
运行时./a_script
,它将在当前目录中查找脚本。只有在授予执行权限时才会运行它。
运行.a_script
时它将搜索隐藏的脚本文件,$PATH
如果找到则运行。
运行a_script
时它将在其中搜索脚本$PATH
并在找到时运行。
运行. a_script
时,即使未授予脚本执行权限,也会搜索脚本并运行它。为什么这样?
此外,.a_script
并./a_script
在当前 shell 中运行命令。
. a_script
运行它是一个不同的外壳?
我可能错了。任何人都可以解释这个问题吗?
解决方案
运行时
./a_script
,它将在当前目录中查找脚本。只有在授予执行权限时才会运行它。运行
.a_script
时它将搜索隐藏的脚本文件,$PATH
如果找到则运行。运行
a_script
时它将在其中搜索脚本$PATH
并在找到时运行。
是的。请注意,在这些情况下,“脚本”不必是实际的 shell 脚本;任何可执行文件都可以。
另外,.
这里只是命令名称的一部分。其中./a_script
代表当前目录。这适用于任何路径:尝试例如ls /./home/.
(与 相同ls /home
)。
在a_script
and.a_script
中,命令名不包含/
,所以进行PATH
搜索。.
在这里并不特别。
运行
. a_script
时,即使未授予脚本执行权限,也会搜索脚本并运行它。为什么这样?
因为在这种情况下,命令是.
并且a_script
只是命令的一个参数.
。.
将搜索给定文件并执行其中的命令(在当前 shell 中)。a_script
不能是通用可执行文件;它必须是一个 shell 脚本。
此外,
.a_script
并./a_script
在当前 shell 中运行命令。
不,如果它们确实是 shell 脚本,它们将生成一个新的 shell 来运行它们。
. a_script
运行它是一个不同的外壳?
不,恰恰相反:内置.
命令专门从当前 shell 中的文件运行命令(就像您输入了它们一样)。
的另一个名称.
是source
,它的工作方式相同,但更容易搜索。另请参阅https://www.gnu.org/software/bash/manual/bashref.html#Bourne-Shell-Builtins。
推荐阅读
- laravel - Laravel 雄辩的试图查询两个 where 或 where
- android - 为什么 Android Emulator 在 int 3 指令后收到 SIGTRAP?
- html - 网格模板区域未能放置网格项目
- javascript - javascript: chrome 扩展的 content_scripts 消息事件未触发
- php - Is it possible to refresh a php site when a post request is detected?
- reactjs - 使用样式组件将道具传递给关键帧 - React
- sql - 如何根据给定的日期范围计算所有数据,除了现有的请参阅下表
- node.js - NodeJS - 使用 Socket IO 和 NodeJS 将聊天消息存储到 MongoDB
- wpf - 如何在 WPF 中的 DataGrid 中对齐行标题的文本?
- python - 为 PyQt6 应用程序定义监视器