我在使用別名時遇到了問題。這確實是特定的情況。我打開新的終端窗口使用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