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

Dan*_*phe 11 unix linux bash shell

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

如果我能够很好地理解它,那就太好了.除此以外:

  • 我可能最终会因为设置crontab而失去一天.
  • 我会一直想知道为什么这个脚本中的shebang 不起作用.
  • 我会一直想知道真正的区别是什么:
    • .run.sh
    • ./run.sh
    • ../run.sh
    • sh run.sh
    • sh ./run.sh

你知道,正是这些事情使我的Linux/Unix生活陷入瘫痪.

作为程序员,我希望在这方面做得更好.我想最好继续使用广泛使用的bash shell,但我可能错了.无论我使用什么工具,我都需要了解它的内涵.

什么是最终解决方案?

Jon*_*son 15

纯娱乐:

  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---使用shshell解释器run.sh.Bourne shell的通常是运行shell脚本的默认,所以这可能是一样的第2项,除了它找到的第一个run.sh$PATH,而不是一个在当前目录.

  5. sh ./run.sh ---除了wordier之外,这通常与#2相同.

命令行界面,例如各种shell解释器,往往非常深奥,因为它们需要在很少的字符中包含很多含义.否则打字需要太长时间.

在学习方面,我建议在你感到舒服之前使用bashksh不要让任何人跟你说话.请不要学习,csh或者稍后在开始使用Bourne-type shell时需要忘记过多.

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


mip*_*adi 12

手册页可能是"终极"解决方案.我总是对他们所包含的宝石感到惊讶.

您甚至可以man bash用来回答您在此问题中提出的一些问题.

  • 是的,我过去常常使用谷歌那些东西......直到我意识到Bash的手册页是一个有用信息的宝库,所有这些都在一个方便的地方. (2认同)
  • 几乎所有东西的手册页都是权威文档......我花了一段时间才意识到当我第一次切换到linux时. (2认同)
  • 对于GNU工具,信息页面通常比联机帮助页面好得多,因为GNU通常不喜欢联机帮助页面(我相信因为它们的格式是专有的).只需要"info coreutils"."info bash"还提供了比手册页更加结构化的输出.非常推荐! (2认同)
  • @litb:我非常不喜欢信息页面.部分问题是我发现导航一个大页面而不是一堆小页面更容易.但我想,对每一个人来说都是如此. (2认同)