為什麼 ~/USERNAME/bin/some_custom_command 不能按預期工作?
我閱讀了*“Linux Bible 第 10 版”*,第 3 章:使用 shell,第 70 頁。有提示部分:
如果要添加自己的命令或 shell 腳本,請將它們放在主目錄的 bin 目錄中(例如 /home/cn/bin 用於名為 cn 的使用者)。在某些 Linux 系統中,此目錄會自動添加到您的路徑中,儘管您可能需要創建該目錄或將其添加到其他 Linux 系統上的 PATH 中。因此,只要您將命令添加到具有執行權限的 bin 中,您只需在 shell 提示符下鍵入命令名稱即可開始使用它。要使所有使用者都可以使用命令,請將它們添加到**/usr/local/bin**
我正在執行 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...
。我已將.bashrc** PATH 行更改為PATH=$PATH:~/home/bin; export PATH;
,重新載入終端會話並始終獲得相同的結果。請解釋一下,為什麼它對我不起作用?如何創建自己的命令並使其僅通過其名稱可訪問?謝謝你。
該
PATH
變數向您的 shell 指示執行檔可能存在的位置。因此,如果您將腳本放置在kek.sh
下~/bin
,那麼您需要添加~/bin
到PATH
. 但是,您似乎已添加~/home/bin/kek
到您的PATH
。另一個問題是腳本被命名
kek.sh
,但是您嘗試執行的命令是kek
. 您需要更改 to 的名稱,kek.sh
或者kek
您需要kek.sh
作為命令執行。放在
#!/usr/bin/bash
腳本的頂部(稱為 shebang)向系統指示應該在腳本上使用什麼解釋器。據我所知,最後用 .sh 命名它不會影響 shell 如何執行腳本,所以kek
只要在之後有適當的解釋器,簡單地命名它就不會改變它的執行方式#!