..

Login Shell与Non-login Shell

疑问

实际上很早之前用 nodejs 写脚本的时候,就遇到过这个问题。只是当时不求甚解,反正 shell: true 能解决问题就行了,以至于这次遇到同样的问题没能快速反应过来。这次不禁让我想要深究起来,于是头脑风暴了一些问题。

  • 有什么方法能让自己写的命令也让 shell 支持通配符解析(不是自己实现)吗? 似乎是各个 shell 内部自己实现的,并没有提供接口。
  • 除了 shell=True,貌似还见过 tty=True,这玩意又代表什么? 顺藤摸出一些其它概念,一会一起总结:
    • interactive 与 non-interactive shell
    • login shell 与 non-login shell
  • shell 执行一个命令的时候,实际上是调用了哪个 system call? fork 还是 exec? 这个疑问让操作系统知识已经模糊的我更加混乱。
  • 那么编程语言的 subprocess 库又是怎么执行一个命令的?使用了哪个 system call?