linux - 如何通过 Linux shell 学习你的方式

标签 linux bash unix shell

我不想在处理 Linux/Unix 的 shell 时浪费宝贵的时间。

如果我能很好地理解它,那就太好了。否则:

  • 我可能会因为设置 crontab 而浪费一天的时间。
  • 我会一直想知道为什么这个脚本中的 shebang 不起作用。
  • 我会一直想知道两者之间的真正区别是什么:
    • >。运行.sh
    • ./run.sh
    • >。 ./run.sh
    • sh run.sh
    • sh ./run.sh

你看,就是这些东西削弱了我的 Linux/Unix 生活。

作为一名程序员,我想在这方面做得更好。我想最好还是使用广泛使用的 bash shell,但我可能错了。无论我使用什么工具,我都需要深入了解它。

最终的解决方案是什么?

最佳答案

只是为了好玩:

  1. 。 run.sh ---“来源”run.sh 中的代码。通常,这用于将环境变量获取到当前 shell 进程中。对于名为 run.sh 的脚本,您可能不希望这样做。

  2. ./run.sh --- 在当前目录执行run.sh脚本。通常当前目录不在默认路径中(参见$PATH),因此需要显式调出相对位置。 . 字符的使用方式与项目 #1 不同。

  3. 。 ./run.sh --- 在当前目录中获取 run.sh 脚本。这结合了项目 #1 和 #2 中 . 的使用。

  4. sh run.sh --- 在 run.sh 上使用 sh shell 解释器。 Bourne shell 通常是运行 shell 脚本的默认设置,因此这可能与项目 #2 相同,除了它在 $PATH 中找到第一个 run.sh 而不是当前目录中的一个。

  5. sh ./run.sh --- 这通常与 #2 相同,除了更冗长。

命令行界面,例如各种 shell 解释器,往往非常深奥,因为它们需要将大量含义打包到少量字符中。否则打字时间太长。

在学习方面,我建议使用 bashksh 并且在您感到舒服之前不要让任何人说服您去做其他事情。请不要使用 csh 学习,否则当您稍后开始使用 Bourne 类型的 shell 时,您将需要忘掉太多东西。

此外,crontab 条目比 shell 的其他用途有点棘手。我的猜测是您浪费了时间,因为您的环境设置与命令行设置不同。如果可能,我建议从其他地方开始。

关于linux - 如何通过 Linux shell 学习你的方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/451713/

相关文章:

linux - 我们可以在 linux 中使用 ClientUserID、ClientAcctString 参数设置 odbc.ini。

linux - bash 找到最初在 su sudo 之前启动脚本的用户

c - 使用 execl 运行 Linux 命令

linux - 使用 bash 打印数组中最大值的索引

linux - 强制 Postfix 在端口 587 上发送电子邮件

php - 如何在 Linux 服务器上使用 php 获取客户端的 MAC 地址

python - 递归复制文件夹并更改复制文件的文件夹/文件名

bash - 将 ASCII 中的 Char 值保存在 bash 变量中

arrays - 在 UNIX 中使用数组将文件动态传递给命令

linux - 如何在 bash 中按文件扩展名和大小对目录进行排序