bash shell 不是已经将命令一一运行,等待执行的命令完成吗?那么我们wait什么时候以及为什么需要这个命令呢?
command bash 中的命令:运行带有参数的命令,忽略任何名为 command 的 shell 函数。
' -p ' 选项意味着使用$PATH的默认值来保证找到所有标准实用程序。
这里提到的默认 PATH 究竟是什么?当我定义时export PATH="/home/ozgur/":$PATH,我不是在默认值上添加一个新的 PATH 路径吗?
## For Example
~$ export PATH="/home/ozgur/":$PATH
~$ echo $PATH
/home/ozgur/:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games
~$ script.sh
hey, i am working !
~$ command -p script.sh
hey, i am working !
Run Code Online (Sandbox Code Playgroud)
当我使用命令的“ -p ”选项时command,我希望它忽略我定义的新 PATH 路径,但这并没有发生。我到底错过了什么?什么是使用“点-p ”选项,如果用户的PATH路径变化并不与“覆盖-p ”选项?
bash shell 上的命令指定的“ keyword ”选项到底有什么作用set?
set -o keyword
或者
set -k
一个简单的例子就足够我理解了。
是否有命令可以在 zsh 上获取内置命令?例如,可以使用compgen -bbash shell 中的命令获取所有内置命令。
为什么我们自己打开文件描述符重定向到stdin只能使用1次?请看下面的例子来理解我想说的话。使用 cat 命令读取一次后,第二次不会通过相同的文件描述符读取文件。
??$ exec 6< input.txt
??$ cat <&6
i am just string
and another string..
??$ cat <&6
??$
Run Code Online (Sandbox Code Playgroud) 当我查看jobs -x解释时,它说:
如果提供了 -x 选项,作业将用相应的进程组 ID 替换命令或参数中找到的任何作业规范,并执行命令、向其传递参数、返回其退出状态。
如果没有例子,这个解释是极其不充分的。x如果可以的话,你能举一个现实生活中“ ”选项用法的例子吗?我们什么时候需要这些选项?
我不明白声明命令中的 t 和 f 参数到底为什么以及如何使用它们。能给我一些简单的插图吗?
当我们用命令打印控制台设置时echo $-,我们himBHs默认输出。但是,当我们在任何脚本文件中运行相同的命令时,我们仅输出hB.
root@root:~# echo $-
himBHs
root@root:~# ./abc.sh
hB
root@root:~#
Run Code Online (Sandbox Code Playgroud)
我想知道的是,即使我们从/bin/bash环境中运行脚本,为什么不应用相同的默认设置?
例如,当我使用/bin/bash 控制台上的命令启动新的子 shell 进程并列出设置时,我会得到输出himBHs。
root@root:~# /bin/bash
root@root:~# echo $-
himBHs
Run Code Online (Sandbox Code Playgroud)
当我尝试从shell 文件中执行相同的过程时,我得到的输出是“ hB ”。
root@root:~# ./abc.sh
hB
Run Code Online (Sandbox Code Playgroud)
我已经尝试过使用 shebang 和不使用 shebang 的相同过程,但是我的脚本文件是或者bash script_file如果./script_file我运行,它会给出相同的结果(hB)。
我究竟缺少什么?
-n 不执行;读取命令并检查语法,但不执行它们。
你能举例说明什么时候我们需要“ noexec ”(Bash 选项之一)吗?
有人可以给我一个如何正确使用此选项的例子吗?
例如,当我运行下面的脚本时,如果我使用Ctrl + C发送INT信号,脚本文件会立即中断。但是,当我尝试使用 Kill 命令执行相同的过程时,该命令预计会完成以使中断信号有效。究竟是什么原因造成这种情况呢?kill -2 pidsleep
#!/bin/bash
trap 'echo signal received!!' SIGINT
echo "The script pid is $$"
sleep 30
Run Code Online (Sandbox Code Playgroud) 例如,\c格式不起作用。我正在输入printf "ABC\ctest"bash 控制台和结果;
ABC\ctest
Run Code Online (Sandbox Code Playgroud)
考虑到\c格式的属性,预期的输出应该是 just 的形式ABC。
我也没有找到详细说明在 bash 上使用 printf 命令的正确来源。此外,如上例所示,为 printf 命令指定的手册页上的属性无法正常工作。
请向我展示详细解释 printf 命令的 bash 源代码。因为我现在很迷茫。
单方括号[和test命令都内置在 bash shell 中。
如果方括号[和test命令具有相同的功能,为什么会有两个单独的命令?
我正在研究 Bash shell。当我通过以下方式输入命令时
cmd1 $(cmd2) $(cmd3)
Run Code Online (Sandbox Code Playgroud)
执行命令的顺序是:
cmd2-> cmd3->cmd1
当我查看Bash shell的shell操作顺序时,我无法完全掌握这种情况。
您能否准确指定 Bash shell 如何处理“命令替换”?例如,标记化是否在每次命令替换时递归返回?