2009-02-18 56 views
3

UNIX「/ usr/bin/script」命令將創建shell會話的運行腳本(有關詳細信息,請參閱「man腳本」)。在UNIX/usr/bin/script中繼承別名

然而,當腳本實例,似乎忘了父shell的ENV瓦爾,別名等

下面的例子演示瞭如何使用「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 

$ 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 

那麼,我怎樣才能讓「腳本」進程從父shell中繼承env設置?

[編輯:]好吧,環境變量是不是忘記了。只是別名。重新採購.profile或其他的東西會工作......但我怎麼能做到這一點自動

+0

不是「腳本」內置在csh?也許ksh的版本打開一個登錄shell而不是一個普通的shell? – 2009-02-18 18:56:56

+0

+1教我關於腳本命令 – 2009-02-18 19:20:12

回答

1

它在我在bash下啓動時可以正常工作。也許你的zsh配置中有一些東西在破壞它,或者它沒有提供你的zsh的啓動文件。你可以試試: script -c zsh

這可能會強制它啓動一個新的zsh shell並讓它獲得你的zsh配置文件。

1

別名不是一個環境變量。您可以獲取您的.profile或您設置別名的位置。還要看看$ SHELL環境變量。

script命令不是非常複雜。複製並使其按您期望的方式工作並不困難。

+0

嗯,我確實試着說「env設置」和所有。 如果您可以在調用/ usr/bin/script時自動解釋如何使其自動生成,那麼必須重新生成.profile才行。不想強迫用戶提醒自己。 – robmandu 2009-02-18 18:58:26

0

正如Jon Ericson所述,別名是而不是的部分環境。你會在腳本中找到你所有的環境。

讓所有的別名腳本,你可以將它們保存在一個文件然後重新裝入:

 
    $ alias myls="ls -lCF" 
    $ alias -L >/tmp/alias.zsh 
    $ script 
    $ . /tmp/alias.zsh 
    $ myls 

如果你把你的別名,在你的home目錄名爲.zshrc文件時,它會自動加載。

+0

好的...沒關係。我瞭解如何獲取手動顯示的.profile或個人別名腳本。但我真正想要的是看到源動作自動發生,而不會對用戶造成任何影響。 – robmandu 2009-02-18 19:11:18

0

的別名的特定情況下的zsh ...如果你把別名(ES)在 .zshenv(而不是.zshrc)應以您的名義自動執行。

我知道這是一個古老的線程,但有時人們閱讀舊線程;>

alias foo='print FOO' 
[[email protected]]~% foo 
FOO 
[[email protected]]~% script 
Script started, file is typescript 
[[email protected]]~% foo 
zsh: command not found: foo 
zsh: use 'exit' to exit. 
[[email protected]]~% exit 
Script done, file is typescript 
[[email protected]]~% mv .bork .zshenv 
[[email protected]]~% foo 
FOO 
[[email protected]]~% script 
Script started, file is typescript 
[[email protected]]~% foo 
FOO 
[[email protected]]~% 
zsh: use 'exit' to exit. 
Script done, file is typescript 
[[email protected]]~%