Bash echo,printf作为命令运行时无法在脚本中工作

Bash echo,printf作为命令运行时无法在脚本中工作,bash,shell,windows-subsystem-for-linux,Bash,Shell,Windows Subsystem For Linux,我在WSL2中测试脚本 这是我的剧本: #!/usr/bin/bash echo "testing..." printf "testing..." 如果我像那样跑步,效果很好 bash测试 源代码测试 。测试 但是,如果我将脚本所在的路径添加到path并运行 测试 为什么以及如何修复它?test是一个内置的bash。POSIX系统还将有一个测试可执行文件 当您在未指定可执行文件路径的情况下输入命令时,bash将首先检查该命令是否是其内置命令之一,然后再

我在WSL2中测试脚本
这是我的剧本:

#!/usr/bin/bash

echo "testing..."
printf "testing..."
如果我像
那样跑步,效果很好
bash测试

源代码测试

。测试

但是,如果我将脚本所在的路径添加到path并运行
测试


为什么以及如何修复它?

test
是一个内置的bash。POSIX系统还将有一个
测试
可执行文件

当您在未指定可执行文件路径的情况下输入命令时,bash将首先检查该命令是否是其内置命令之一,然后再在
路径中搜索可执行文件。如果该命令与其中一个bash内置程序的名称匹配,它将运行该内置程序

如果仍希望在不指定脚本路径的情况下运行脚本,有两种方法:

  • 建议:重命名文件,然后使用新名称运行它(脚本文件需要设置可执行权限位)
  • 确保脚本的文件权限设置为可执行,确保设置了
    路径
    ,以便在系统的
    测试
    之前找到
    测试
    ,然后运行
    环境测试
    ,运行脚本
    env
    将搜索您的
    路径
    以找到您的
    测试
    可执行文件,然后执行它

  • 最终,不建议使用选项2,因为对
    路径重新排序可能很脆弱,并且在系统上使用第二个
    测试
    二进制文件可能会让人困惑(对您和其他人来说)。

    测试
    是一个内置的bash。POSIX系统还将有一个
    测试
    可执行文件

    当您在未指定可执行文件路径的情况下输入命令时,bash将首先检查该命令是否是其内置命令之一,然后再在
    路径中搜索可执行文件。如果该命令与其中一个bash内置程序的名称匹配,它将运行该内置程序

    如果仍希望在不指定脚本路径的情况下运行脚本,有两种方法:

  • 建议:重命名文件,然后使用新名称运行它(脚本文件需要设置可执行权限位)
  • 确保脚本的文件权限设置为可执行,确保设置了
    路径
    ,以便在系统的
    测试
    之前找到
    测试
    ,然后运行
    环境测试
    ,运行脚本
    env
    将搜索您的
    路径
    以找到您的
    测试
    可执行文件,然后执行它

  • 最终,不建议使用选项2,因为重新排序
    路径可能很脆弱,并且在系统上使用第二个
    测试
    二进制文件可能会让人困惑(对您和其他人来说)。

    测试
    是一个标准实用程序(也称为
    [
    )显示
    类型测试的输出。lol,thk表示答案。它在我修改其文件名后工作。
    test
    是一个标准实用程序(也称为
    [/code>)显示
    类型测试的输出。lol,thk表示答案。它在我修改其文件名后工作。我不会说“bash实用程序”--
    /usr/bin/test
    存在,即使您根本没有安装bash;bash提供的内置等效物是一种性能优化,但如果没有,行为将是相同的。我不会说“bash实用程序”--
    /usr/bin/test
    存在,即使您根本没有安装bash;bash提供了一个内置等价物是一种性能优化,但如果没有安装,行为将是相同的。