脚本命令丢失来自 shell 的别名
Script command losing alias from shell
当我 运行 脚本命令时,它会丢失现有 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
不确定为什么调用退出并终止脚本。如果我可以让脚本将标准输入从管道移动到终端那么它应该没问题。
您可以让 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 的标准输入关闭时,它退出。
当我 运行 脚本命令时,它会丢失现有 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
不确定为什么调用退出并终止脚本。如果我可以让脚本将标准输入从管道移动到终端那么它应该没问题。
您可以让 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 的标准输入关闭时,它退出。