web-dev-qa-db-ja.com

デフォルトでインタラクティブに実行するbashスクリプトを定義することは可能ですか?

私はいくつかのスクリプトを作成し、それらを~/binフォルダ。私はすでに、Shellセッション中にタイトルを呼び出すだけで、それらを実行できます。ただし、それらはインタラクティブに実行されていません(つまり、私の~/.bashrcエイリアスは読み込まれません)。

それらをデフォルトでインタラクティブに実行するようにマークする方法はありますか?それとも私はsource ~/.bashrcそれらの中で定義されているエイリアスを使用するには?

他の選択肢は大歓迎です!

6
artu-hnrq

-iオプションをハッシュバングに追加すると、スクリプトがインタラクティブモードで実行されるように指定されます。

#!/bin/bash -i

または、そのオプションでスクリプトを呼び出すこともできます。

bash -i /path/to/script.sh
4
jesse_b

.bashrcはお勧めできません。 .bash_aliasファイルにエイリアスを付けて、スクリプトでそのファイルをソースし、shoptを使用します

何かのようなもの:

shopt -s expand_aliases
source ~/.bash_alias

Bashのマニュアルページには次のように記載されています。

シェルがインタラクティブでない場合、エイリアスは展開されません。ただし、expand_aliasesシェルオプションがshoptを使用して設定されている場合を除きます(下記のシェルの組み込みコマンドの下のshoptの説明を参照してください)。

8
BANJOSA