Shell

為什麼 ~/USERNAME/bin/some_custom_command 不能按預期工作?

  • March 25, 2022

我閱讀了*“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,那麼您需要添加~/binPATH. 但是,您似乎已添加~/home/bin/kek到您的PATH

另一個問題是腳本被命名kek.sh,但是您嘗試執行的命令是kek. 您需要更改 to 的名稱,kek.sh或者kek您需要kek.sh作為命令執行。

放在#!/usr/bin/bash腳本的頂部(稱為 shebang)向系統指示應該在腳本上使用什麼解釋器。據我所知,最後用 .sh 命名它不會影響 shell 如何執行腳本,所以kek只要在之後有適當的解釋器,簡單地命名它就不會改變它的執行方式#!

引用自:https://unix.stackexchange.com/questions/696838