Tho*_*erk 73
如果 bash 遇到$(pwd),它将执行命令 pwd 并替换$(pwd)为该命令的输出。$PWD是一个几乎总是设置的变量。pwd 是很长一段时间以来的内置 shell 命令。
因此,$PWD如果未设置此变量,$(pwd)则会失败,如果您使用的 shell 不支持根据$()我的经验经常出现这种情况的构造,则会失败。所以我会使用$PWD.
作为每个书呆子,我都有自己的shell 脚本教程
mar*_*are 12
还应该提到的$PWD是,由于其性能,这是可取的。作为 shell 变量,它几乎可以立即解析。$(pwd)有点混乱。如果您man 1 bulitin使用 Bash检查系统,您会看到这pwd是一个内置命令,这可能会让您相信它与访问变量一样快。然而,$()无论内部是什么,构造总是启动一个新的子shell(一个新进程)来运行它的内容。反引号也是如此。事实上,当我对它进行基准测试时:
echo 'Benchmarking $(pwd)...'
time (for i in {1..1000}; do echo $(pwd) > /dev/null; done)
echo 'Benchmarking $PWD...'
time (for i in {1..1000}; do echo $PWD > /dev/null; done)
Run Code Online (Sandbox Code Playgroud)
我得到 1.52 秒的$(pwd)通话时间和 0.018 秒的通话时间$PWD。应尽可能避免不必要地启动子 shell 以及任何其他无关进程。它们比您在其他语言中可能习惯的函数调用要昂贵得多。
| 归档时间: |
|
| 查看次数: |
143719 次 |
| 最近记录: |