【发布时间】:2015-04-04 17:56:10
【问题描述】:
当我运行脚本命令时,它会丢失现有 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
基本上我正在创建一个命名管道并将管道作为脚本程序的标准输入,尝试运行源命令,然后关闭从管道到终端标准输入的标准输入,以便我可以继续执行脚本。
但是当我执行时,脚本在我执行“exec 0
bash-3.2$ exec 0<&-
bash-3.2$ exit
Script done, output file is typescript
不知道为什么调用出口和终止脚本。如果我可以让脚本将标准输入从管道移动到终端,那么它应该没问题。
【问题讨论】:
-
#!/bin/ksh不是 bash 脚本。也许你想要#!/bin/bash代替? -
我改变了它,但仍然没有运气:(
-
但是你运行的目标脚本是 bash 脚本吗?
标签: linux bash shell scripting exec