繁体   English   中英

脚本命令从shell丢失别名

[英]Script command losing alias from shell

当我运行脚本命令时,它会丢失现有外壳中的所有别名,这对于使用大量别名的人来说是不希望的。 因此,我试图查看是否可以再次自动获取.profile,以查看它是否在无需用户执行的情况下起作用。

下面是代码:

#!/bin/bash -l
rm aliaspipe
mkfifo aliaspipe
bash -c "sleep 1;echo 'source ~/.bash_profile' > aliaspipe ;echo 'alias' > aliaspipe ;echo 'exec 0<&-' > aliaspipe"&
echo "starting script for recording"
script < aliaspipe

基本上,我正在创建一个命名管道,并将该管道作为脚本程序的stdin,尝试运行source命令,然后关闭从管道到终端stdin的stdin,以便我可以继续执行脚本。

但是当我执行时,执行“ exec 0 <&-”后脚本将退出,

bash-3.2$ exec 0<&-
bash-3.2$ exit

Script done, output file is typescript

不知道为什么要调用该出口并终止脚本。 如果我可以让脚本将标准输入从管道移动到终端,那应该没问题。

您可以通过明确指示执行script来执行bash登录Shell。

# Gnu script (most Linux distros)
script -c "bash -l"
# BSD script (also Mac OS X)
script typescript bash -l

这将导致您的.bash_profile被获取。


顺便说一句,重定向不是堆栈。 当您编写exec 0<&- ,您将关闭标准输入,而当bash的标准输入关闭时,它将退出。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM