从 .sh 脚本打开新终端后,.sh 脚本中的源代码不起作用
Source in .sh script does not work after opening new terminal from .sh script
我在获取别名方面遇到问题。这确实是具体案例。我使用 open_new.sh:
打开带有两个选项卡的新终端 window
#!/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 用户,以正常方式使用别名获取该文件没有任何问题。
提前致谢。
我建议将以下内容附加到您的 ~/.bashrc
:
source ~/.my_aliases
这样,所有新标签页都会继承您的别名。
在我在这里提问之前,我一直在寻找答案三天。现在我已经找到了我想分享的答案,如果其他人将来会遇到这个问题的话。在文件 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
我在获取别名方面遇到问题。这确实是具体案例。我使用 open_new.sh:
打开带有两个选项卡的新终端 window #!/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 用户,以正常方式使用别名获取该文件没有任何问题。
提前致谢。
我建议将以下内容附加到您的 ~/.bashrc
:
source ~/.my_aliases
这样,所有新标签页都会继承您的别名。
在我在这里提问之前,我一直在寻找答案三天。现在我已经找到了我想分享的答案,如果其他人将来会遇到这个问题的话。在文件 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