bashコマンドは機能しますが、権限にもかかわらずスクリプトは機能しません。

bashコマンドは機能しますが、権限にもかかわらずスクリプトは機能しません。

私のスクリプトは次のように保存され、recent.sh現在は次のように読みました。

#!/bin/bash -x
rcnt() {
    ls -t -p | grep -v / | head -n1 | cat
}

source recent.sh実行すると、rcntディレクトリ内の最新のファイルが印刷されます。しかしI./recent.shまたはsh recent.shそれがターミナルに何も印刷しないとき。 (保存したディレクトリで実行してみました。)

usr/bin/env bashLinux Mint 19の端末でこれを実行しようとしていますが、-xなしでbashの代わりにshを使用してみました。権限は777です。

このスクリプトを実行している端末に印刷するにはどうすればよいですか?

私は初心者であり、何かを見落としているかもしれませんが、ほとんどの権限を正しく設定することを提案している関連SO、StackExchangeなどの答えをすべて読んで、bashがどこにあるのか(私にはbin / bash)または他のコード関連の問題。

答え1

これを実行するには、作成した関数を呼び出す必要があります。
Bashの関数呼び出しには括弧は必要ありません。したがって、スクリプトは次のようにする必要があります。

#!/bin/bash
rcnt() {           #Function definition
    ls -t -p | grep -v / | head -n1 | cat
}

rcnt               #Function invocation

関連情報