The UNIX ‘/usr/bin/script’ command will create a running transcript of your shell session (see ‘man script’ for more info).
However, when inside a script instance, it seems to forget the parent shell’s env vars, aliases, etc.
The following example demonstrates how the ‘ll’ alias I define is ignored inside ‘script’:
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
$ ll
zsh: command not found: ll
$ 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
So, how can I get the ‘script’ process to inherit the env settings from the parent shell?
[EDIT:] Okay, env vars are not forgotten. Just the aliases. Re-sourcing the .profile or something would work… but how can I make that happen automatically?
It works OK when I start it under bash. Maybe there’s something in your zsh configuration that’s mucking it up, or it’s not sourcing your zsh’s startup files. You could try: script -c zsh
Which may force it to start a new zsh shell and have it source your zsh config files.