[英]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.