我在使用别名时遇到了问题。这确实是特定的情况。我打开新的终端窗口使用open_new.sh两个标签:从.sh脚本中打开新终端之后,.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用户,我没有任何问题以正常方式使用别名来获取该文件。
在此先感谢。
为什么在tab1.sh中需要'exec bash'?这似乎是问题。 – codeforester
如果我不添加'exec bash',当tab1.sh完成执行时,我将无法输入任何内容。 – pykaczka
'exec'用新进程替换当前的shell。新过程也是一个壳的事实并不意味着别名被转移到它。 – chepner