~/USERNAME/bin/some_custom_commandが期待どおりに機能しないのはなぜですか?

~/USERNAME/bin/some_custom_commandが期待どおりに機能しないのはなぜですか?

私は読んだ「Linux聖書10版」、第3章:シェルの使用、70ページ。ヒントセクションがあります:

独自のコマンドまたはシェルスクリプトを追加するには、ホームディレクトリのbinディレクトリに配置します(たとえば、cnというユーザの場合は/home/cn/bin)。一部のLinuxシステムではこのディレクトリがパスに自動的に追加されますが、他のLinuxシステムではディレクトリを作成するか、PATHに追加する必要があります。したがって、実行権限を持つbinにコマンドを追加した場合は、シェルプロンプトにコマンド名を入力するだけでそのコマンドを使用できます。すべてのユーザーがコマンドを使用できるようにするには、次のコマンドを追加します。/usr/ローカル/空

私はFedora Linux 35 Workstation Editionを実行しており、カスタムコマンドを生成しようとしています。私が作った~/bin/kek.sh

#! /usr/bin/bash
echo "Kek"

コマンドラインに移動し、kek自分のホームディレクトリを入力します。私は持っていますbash: kek: command not found...。その後私は私の家に行きました。~/.bashrcファイルの末尾に次の行を追加します。

PATH=$PATH:~/home/bin/kek; export PATH;

それから戻ります~ディレクトリに移動し、私が変更したkekのと同じbash: kek: command not found....bashrcPATH行をに追加してPATH=$PATH:~/home/bin; export PATH;ターミナルセッションを再ロードすると、常に同じ結果が得られます。

なぜそれが私にうまくいかないのか説明してください。独自のコマンドを作成し、名前でのみアクセスできるようにするにはどうすればよいですか?ありがとうございます。

答え1

このPATH変数は、実行可能ファイルが存在できるシェルを表します。したがって、スクリプトをkek.sh下に置いたら、に~/bin追加する必要があります。しかし、代替アイテムに追加したようです。~/binPATH~/home/bin/kekPATH

もう1つの問題は、スクリプトの名前ですが、kek.sh実行したいコマンドがあることですkek。名前を変更するkek.shか、コマンドを実行する必要がkekあります。kek.sh

#!/usr/bin/bashスクリプトの上部(shebangと呼ばれる)に配置すると、スクリプトにどのインタプリタを使用する必要があるかをシステムに通知します。私が知っている限り、最後に.shで名前を付けることはシェルがスクリプトを実行する方法には影響しませんので、名前を付けるだけで適切なインタプリタがある限り、kek実行方法は変わりません。#!

関連情報