扫码关注官方订阅号
学习Linux命令时了解到在bash中输入$bash命令可以启动一个子bash程序
既然在终端中就可以输入命令进行操作了,何必再启动一个bash子程序呢?在终端中启动bash子程序的动机是什么?使用场景是什么?
ringa_lee
bash有 交互式/非交互式 两种模式。bash只是一个比较知名的shell,还有 dash, zsh, fish, powershell。 还有执行脚本语言的专用环境,它们的解释器也可以是交互模式/非交互模式,比如 python,nodejs。,可以从bash进入这些解释器的交互模式,从bash进入bash当然也是其中一种情形。也可以从bash进入zsh,从zsh进入python。所以这还是一个意料之外和意料之中的 feature,一致的适用性带来有趣效果。
原回答:我操作了一下,$bash 没有任何输出。$(bash) 会进入子bash交互,和直接输入 bash 效果相同。
$bash
$(bash)
bash
这就是一个意料之外和意料之中的 feature,单单看这里可能找不到有意义的应用场景,但是适用性强的好处就是灵活。真正起作用的是那个 $()。它的作用是开启一个subshell,被它括起来的命令部分将优先执行。
bash后面可以接参数和脚本文件,这样就可以不进入交互模式而直接返回结果。可以使用 变量赋值: var = $(command)。可以使用 管道、命令组合: file $(which bash) 还有很多奇妙的组合方式。一般情况下 $(command)和 `command` 效果相同
$(command)
`command`
不使用括号,$可以表示几个特殊的变量,比如 $PATH(输入 env 查看一堆环境变量),$# $0 $1 $@ 用于脚本编程中。
bash 命令后面可以加参数(如用户,命令),可以把一些命令放到后台执行
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
bash有 交互式/非交互式 两种模式。bash只是一个比较知名的shell,还有 dash, zsh, fish, powershell。 还有执行脚本语言的专用环境,它们的解释器也可以是交互模式/非交互模式,比如 python,nodejs。,可以从bash进入这些解释器的交互模式,从bash进入bash当然也是其中一种情形。也可以从bash进入zsh,从zsh进入python。所以这还是一个意料之外和意料之中的 feature,一致的适用性带来有趣效果。
原回答:
我操作了一下,
$bash没有任何输出。$(bash)会进入子bash交互,和直接输入bash效果相同。这就是一个意料之外和意料之中的 feature,单单看这里可能找不到有意义的应用场景,但是适用性强的好处就是灵活。真正起作用的是那个 $()。它的作用是开启一个subshell,被它括起来的命令部分将优先执行。
bash后面可以接参数和脚本文件,这样就可以不进入交互模式而直接返回结果。
可以使用 变量赋值: var = $(command)。
可以使用 管道、命令组合: file $(which bash) 还有很多奇妙的组合方式。一般情况下
$(command)和`command`效果相同不使用括号,$可以表示几个特殊的变量,比如 $PATH(输入 env 查看一堆环境变量),$# $0 $1 $@ 用于脚本编程中。
bash 命令后面可以加参数(如用户,命令),可以把一些命令放到后台执行