2016-02-19 56 views
2

我對Bash和Linux一般都很陌生。我創建了一些我希望能夠通過鍵入命令而不是目錄和可執行文件來使用的腳本。如果這有所作爲,我正在使用Debian Jessie。在Linux中遞歸地添加bash腳本作爲命令?

我的一個腳本的路徑是~/Scripts/DIR_1/My_Script.sh,而另一個腳本的路徑是~Scripts/DIR_2/My_Other_Script.sh。我希望Scripts目錄中包含的所有腳本可以作爲命令編入索引,而不管目錄/路徑深度如何。

我附加這段文字我.bashrc文件的末尾...

PATH=${PATH}:$(find ~/Scripts -type d | sed '/\/\\./d' | tr '\n' ':' | sed 's/:$//')

因爲我是很新,這種事情,我只好偷線從here

當我嘗試運行命令行withing我的主文件夾的子目錄My_Script(或其他爲此事的任何地方),我得到My_Script: command not found

我會欣然承認,我可能誤會增加的過程一個bash腳本到命令行。

如何遞歸地添加bash腳本作爲命令?我目前使用的流程有什麼問題?

+0

ln -s/path/to/script/usr/local/bin(或/ usr/bin)。最佳選擇:將所有腳本放在一個文件夾中(例如/ opt/script)並將此文件夾放到PATH中 –

回答

1

我認爲你的問題是你沒有把.sh作爲你文件名的一部分。

正常情況下,僅鍵入第一個字母后按下標籤應該完成命令,直到有歧義的地方(或者完全沒有)。如果含糊不清,請再次按Tab鍵顯示選項。所以在你的情況下,如果你輸入My<tab><tab>你應該有選項My_Script.shMy_Other_Script.sh顯示。如果你鍵入My_Script<tab>應該通過把My_Script.sh

編輯

我忘了精確的,你可以通過做echo $PATH檢測路徑的值完成。這將允許您檢查您所複製的命令是否符合您的要求。

+0

我遇到的另一個問題是我猜系統需要重啓以將更改索引到.bashrc。有沒有一種方法可以添加命令,以便我不必追加.sh? – Allenph

+1

系統不需要重新啓動,但您需要重新啓動bash(通過打開新的終端或relogging)或獲取.bashrc(使用'source .bashrc')。 爲了不必輸入.sh,你可以創建一個沒有.sh的別名(在你的.bashrc中:'別名My_Script = My_Script.sh'),但是你必須爲每個命令做這件事(你可以生成它用類似的'find'命令),或者不把.sh放到你的文件中。第二個選項是我的首選。擴展對於系統確定文件的類型完全沒有必要,所以簡單地放下它! –

+0

嗯。終端告訴我它不知道「source」命令是什麼。 – Allenph