gpt4 book ai didi

linux - 从 .sh 脚本打开新终端后,.sh 脚本中的源代码不起作用

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:41:12 29 4
gpt4 key购买 nike

我在采购别名方面遇到了问题。这确实是具体案例。我使用 open_new.sh 打开带有两个选项卡的新终端窗口:

    #!/bin/bash
gnome-terminal --tab --title="Tab1" -e "./tab1.sh" --tab --title="Tab2" -e "./tab2.sh"

在文件 tab1.sh 中我有:

    #!/bin/bash
ls
. ~/.my_aliases
echo "done"
exec bash

文件 tab2.sh 看起来非常相似。第 2 行和第 4 行工作正常,但看起来第 3 行不起作用。当我尝试使用“lll”别名时,它说“bash: lll: command not found”。然后,当我直接在终端别名中从第 3 行键入命令时,就开始工作了。

我尝试了很多不同的解决方案,但我仍然无法处理。例如,我在采购之前尝试过这样的事情:

    shopt -s expand_aliases

我已经试过了:

    source ~/.my_aliases

我也试过:

    #!/bin/bash -i

有人可以帮助我吗?也许我应该提两件事:我不是 root 用户,以正常方式使用别名获取该文件没有任何问题。

提前致谢。

最佳答案

在我在这里提问之前,我一直在寻找答案三天。现在我已经找到了我想分享的答案,如果其他人将来会遇到这个问题的话。在文件 open_new.sh 中:

#!/bin/bash
gnome-terminal --tab --title="Tab1" -e "bash --rcfile ./tab1.sh" --tab --title="Tab2" -e "bash --rcfile ./tab2.sh"

在文件 tab1.sh 中:

. ~/.bashrc
. ~/.my_aliases
ls
echo "done"

解释:

--rcfile File #execute commands from File instead of the standard personal initialization file ~/.bashrc

在文件中,您可以放置​​许多其他命令。所有 bash 命令都对我有用。我在以下位置找到了解决方案:

man bash

关于linux - 从 .sh 脚本打开新终端后,.sh 脚本中的源代码不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42620982/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com