在 UNIX /usr/bin/script 中继承别名

rob*_*ndu 5 unix shell scope environment-variables

UNIX“/usr/bin/script”命令将创建shell会话的运行脚本(更多信息请参见“man script”)。

但是,当脚本实例中时,它似乎忘记了父 shell 的环境变量、别名等。

以下示例演示如何在“脚本”中忽略我定义的“ll”别名:

zsh> mkdir temp
zsh> cd temp

zsh> alias "ll=ls -alF"

zsh> ll
total 24
drwxr-xr-x   2 me   mygroup    4096 Feb 18 13:32 ./
drwxr-xr-x  28 me   mygroup    8192 Feb 18 13:32 ../

zsh> script a.out
Script started, file is a.out
Run Code Online (Sandbox Code Playgroud)

美元

zsh: command not found: ll
Run Code Online (Sandbox Code Playgroud)
$ exit
Script done, file is a.out

zsh> ll
total 32
drwxr-xr-x   2 me   mygroup    4096 Feb 18 13:32 ./
drwxr-xr-x  28 me   mygroup    8192 Feb 18 13:32 ../
-rw-r--r--   1 me   mygroup     182 Feb 18 13:32 a.out
Run Code Online (Sandbox Code Playgroud)

那么,如何让“脚本”进程从父 shell 继承 env 设置?

[编辑:] 好的,环境变量不会被遗忘。只是别名。重新采购 .profile 或其他东西会起作用......但我怎样才能自动发生?

Mic*_*k T 1

当我在 bash 下启动它时,它工作正常。也许您的 zsh 配置中有一些东西把它弄乱了,或者它没有获取您的 zsh 的启动文件。您可以尝试: script -c zsh

这可能会强制它启动一个新的 zsh shell 并获取您的 zsh 配置文件。