Bash
您能否將多個可執行腳本放在一個目錄中,並通過採購該目錄使所有這些命令可用?
我想將一堆可執行腳本放在 .command 目錄(也是可執行的)中,然後只需在我的 .bash_profile 中獲取該目錄即可。這可能嗎?我可以讓它與一個文件一起工作。但是當添加第二個文件時,第二個文件的命令在 shell 中不可用。
我的 .bashprofile
source ~/.commands/*
我的 .commands 文件夾
-rwxr-xr-x 1 christopherreece staff 108 Dec 14 08:55 server_utils.sh -rwxr-xr-x 1 christopherreece staff 23 Dec 14 09:04 short
短篇內容
echo 'a short program'
server_utils.sh 的競賽
function upfile { scp $1 root@myserveripadress:~/ }
外殼輸入和輸出。
$ hello hello $ short -bash: short: command not found
你不能用一個來做到這一點
source
。第一個參數被視為文件名,其他參數顯示為位置參數$1
,$2
… 在源腳本中。$ cat test.src echo hello $1 $ source test.src there hello there
但是你可以用一個循環來做到這一點:
for f in ~/commands/*.src; do source "$f" done
(順便說一句,如果您使用的編輯器使備份文件帶有尾隨
~
. ,那麼讓此類內容僅包含具有特定副檔名的文件非常有用。那麼備份副本不會意外啟動。)儘管請注意,如果您有一個包含普通命令的源腳本(如
echo
上面的命令或您的short
),它們將在腳本為source
d 時執行。它們不會在採購外殼中生成任何功能。$ cat test2.src echo "shows when sourced" func() { echo "shows when function used" } $ source test2.src shows when sourced $ func shows when function used
如果您想使用可執行腳本,則當您將其名稱作為命令時腳本執行的那種,將它們放在某個位置
PATH
(我建議使用~/bin
它),給它們執行權限並在開頭放置適當的 hashbang腳本(#!/bin/sh
或#!/bin/bash
其他)