交互式shell与非交互式shell

交互式shell会通过tty从tty上读取数据,一般脚本为非交互式(不需要从tty读取数据)。

非交互式的shell仍然可以访问它的tty.如下所示:

#将读取到的内容输出

#!/bin/bash
PROMPT='$ '
while :
do
    echo -n "$PROMPT"
    read line
    echo "$line"
done

测试一个脚本是否运行在交互式shell的方法如下:

#!/bin/bash

if [ -z $PS1 ]
then
    echo "运行在交互式shell"
else
    echo "运行在非交互式shell"
fi

使用#!/bin/bash -i可以强制脚本运行在交互模式下。慎用,可能会产生各种古怪行为。

你可能感兴趣的:(交互式shell与非交互式shell)