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.
An alias isn't an environment variable. You could source your .profile
or where ever you set up the alias. Also take a look at the $SHELL environment variable.
The script
command isn't terribly complicated. It wouldn't be too difficult to replicate and make it work the way you expect.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With