我在采购别名时遇到问题。这是非常具体的案例。我使用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用户,我没有任何问题用正常方式使用别名来获取该文件。
提前致谢。
答案 0 :(得分:1)
在我提问之前,我已经找了三天的答案。现在我已经找到了我想要分享的答案,如果其他人将来会解决这个问题。在文件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
答案 1 :(得分:0)
我建议将以下内容附加到~/.bashrc
:
source ~/.my_aliases
这样,所有新标签都会继承您的别名。