質問するログイン新規登録

回答編集履歴

1

追記

2020/03/12 11:04

投稿

otn
otn

スコア86430

answer CHANGED
@@ -1,4 +1,7 @@
1
1
  `./a.sh`で起動すると、新たにシェルプロセスが生成されて、その新しいシェル環境の中でコマンドが実行され関数が定義されます。元のコマンドラインのシェルの環境のは影響がありません。
2
2
 
3
3
  新たにシェルプロセスを生成せずに、コマンドラインのシェルで関数定義をするためには、`.`(ドットコマンド)または`source`コマンドでファイルを読み込みます。
4
- `. a.sh`または`source a.sh`
4
+ `. a.sh`または`source a.sh`
5
+
6
+ この場合、`a.sh`には実行権限は不要で、1行目の`#!`行はコメント以上の意味を持ちません。
7
+ なので、`source`コマンドで読み込むファイルは、実行権限を付けないでおくと、間違えて`./a.sh`と実行してしまうことが避けられます(エラーになるので気づく)。`.bashrc`等も同様です。