私はエイリアスの取得に問題があります。それは本当に特殊なケースです。私が持っているファイルtab1.shで.shスクリプトから新しい端末を開いた後に、.shスクリプトのソースが機能しない
#!/bin/bash
gnome-terminal --tab --title="Tab1" -e "./tab1.sh" --tab --title="Tab2" -e "./tab2.sh"
::非常に似ていますtab2.sh
#!/bin/bash
ls
. ~/.my_aliases
echo "done"
exec bash
ファイルを、私はopen_new.shを使用して2つのタブで新しいターミナルウィンドウを開きます。 2行目と4行目はうまく動作しますが、3行目はうまく動作しません。 'lll'エイリアスを使用しようとすると 'bash:lll:command not found'と表示されます。次に、3行目のコマンドを端末エイリアスに直接入力すると、作業が開始されます。
私は多くの異なる解決方法を試しましたが、それでも対応できません。たとえば、私が調達する前にこのような何かを試してみた:
shopt -s expand_aliases
私はこの試みた:
source ~/.my_aliases
をし、また、私が試した:
#!/bin/bash -i
のことができる人です助けて? 多分私は2つのことを言及する必要があります:私はrootユーザーではない、私は通常の方法でエイリアスでそのファイルを調達することに何の問題もない。
ありがとうございます。
tab1.shで 'exec bash'が必要なのはなぜですか?それは問題のようです。 – codeforester
私は 'exec bash'を追加しないと、tab1.shの実行が終了したら何も入力することができません。 – pykaczka
'exec'は現在のシェルを新しいプロセスで置き換えます。その新しいプロセスがシェルであるという事実は、エイリアスがシェルに転送されることを意味しません。 – chepner