1
74
你可以从
|
2
17
因为这个问题很流行,所以我想添加一个更新的答案,并提供一些附加信息。
通常,在现代系统中,
bash将这些变量设置在
过程
(不是环境)当我们启用
许多系统在默认或系统范围的启动文件中为我们启用此选项(
/ETC/BASHC
或者类似的),所以我们需要记住,这些变量可能并不总是可用的。在某些系统上,如Cygwin,此选项是
不
为我们启用,所以bash不设置
在编写非交互式脚本时,我们通常不想依赖
相反,
如接受答案所示
Puppe
我们可以使用
或者,
这个
上述两种方法都适用于任何POSIX shell。特别是对于bash,我们可以使用 process substitution 要简化前面的示例:
…比
如果出于某种原因,我们仍然想使用
迎头痛击
|
3
6
那是不是…(在基于xterm的终端上) |
4
5
设置变量。 |
5
3
为了完成任务,我要提到的是,设置“checkwinsize”选项正是OP所要寻找的,但有一个要点。在非交互式脚本中,默认情况下是未设置的,但您可以选择在任何脚本的开头添加以下行以启用它:
不幸的是,行和列变量在设置选项时没有立即设置(至少在上次尝试时)。相反,您需要强制bash等待子shell完成,此时它将设置这些变量。因此,针对这个问题的完整bash解决方案是使用以下行启动脚本:
然后,您可以将行和列变量用于心脏的内容,并且每次调整终端的大小时,它们都将重置为正确的值,而无需调用任何外部实用程序。 |
6
2
你试过让你的shebang说:
|
7
2
运行
|
8
1
您可以用其他语言编写一个程序,直接调用这些ioctl来获取tty维,然后使用该程序。
编辑:嗯,原来那个程序已经存在,并且被调用
|
9
1
数字会随着窗口大小的改变而改变;陷阱显示脚本正在获取信号绞盘。 |
10
0
为什么不在exec命令上使用环境变量,如下所示:
|
11
-1
我的经验是,你应该从开始的脚本。脚本“to”run“形式,而不是“scritp”to“run”。简单检查如下:
|
Batavia · Bash-删除大目录中的文件 1 年前 |
stackbiz · 如何在bash中将所有换行符替换为“\n” 1 年前 |
Paul · Bash wait命令忽略指定的进程ID 2 年前 |