我不想在处理 Linux/Unix 的 shell 时浪费宝贵的时间。
如果我能很好地理解它,那就太好了。否则:
- 我可能会因为设置 crontab 而浪费一天的时间。
- 我会一直想知道为什么这个脚本中的 shebang 不起作用。
- 我会一直想知道两者之间的真正区别是什么:
- >。运行.sh
- ./run.sh
- >。 ./run.sh
- sh run.sh
- sh ./run.sh
你看,就是这些东西削弱了我的 Linux/Unix 生活。
作为一名程序员,我想在这方面做得更好。我想最好还是使用广泛使用的 bash shell,但我可能错了。无论我使用什么工具,我都需要深入了解它。
最终的解决方案是什么?
最佳答案
只是为了好玩:
。 run.sh
---“来源”run.sh 中的代码。通常,这用于将环境变量获取到当前 shell 进程中。对于名为run.sh
的脚本,您可能不希望这样做。./run.sh
--- 在当前目录执行run.sh
脚本。通常当前目录不在默认路径中(参见$PATH
),因此需要显式调出相对位置。.
字符的使用方式与项目 #1 不同。。 ./run.sh
--- 在当前目录中获取run.sh
脚本。这结合了项目 #1 和 #2 中.
的使用。sh run.sh
--- 在run.sh
上使用sh
shell 解释器。 Bourne shell 通常是运行 shell 脚本的默认设置,因此这可能与项目 #2 相同,除了它在$PATH
中找到第一个run.sh
而不是当前目录中的一个。sh ./run.sh
--- 这通常与 #2 相同,除了更冗长。
命令行界面,例如各种 shell 解释器,往往非常深奥,因为它们需要将大量含义打包到少量字符中。否则打字时间太长。
在学习方面,我建议使用 bash
或 ksh
并且在您感到舒服之前不要让任何人说服您去做其他事情。请不要使用 csh
学习,否则当您稍后开始使用 Bourne 类型的 shell 时,您将需要忘掉太多东西。
此外,crontab
条目比 shell 的其他用途有点棘手。我的猜测是您浪费了时间,因为您的环境设置与命令行设置不同。如果可能,我建议从其他地方开始。
关于linux - 如何通过 Linux shell 学习你的方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/451713/