我想執行foo.bsh只輸入foo.bsh,甚至是foo而不是./foo.bsh。我想暫時對目錄中的所有.bsh以及全局進行此操作。例如,我想要一個全局密鑰MYIP,它調用一個腳本來回顯我的外部IP。我不知道這是否合理,因爲如果我覆蓋回聲,我可能會崩潰。bash - 執行快捷鍵
編輯:更清楚。我想要一個寫「./」的快捷方式爲這些命令保存2個鍵,例如在foo.exe可以用foo執行的DOS下。如果輸入foo(ENTER),無法在當前目錄中查找.bsh文件?
我想執行foo.bsh只輸入foo.bsh,甚至是foo而不是./foo.bsh。我想暫時對目錄中的所有.bsh以及全局進行此操作。例如,我想要一個全局密鑰MYIP,它調用一個腳本來回顯我的外部IP。我不知道這是否合理,因爲如果我覆蓋回聲,我可能會崩潰。bash - 執行快捷鍵
編輯:更清楚。我想要一個寫「./」的快捷方式爲這些命令保存2個鍵,例如在foo.exe可以用foo執行的DOS下。如果輸入foo(ENTER),無法在當前目錄中查找.bsh文件?
當找不到命令時,您可以掛鉤到bash的處理中,然後添加您自己的函數來處理您喜歡的操作。所以
function command_not_found_handle()
{
[ -f "${1}.bsh" ] && bash "${1}.bsh"
}
,如果你有在當前目錄foo.bsh,你可以只輸入「富」,它會運行:例如,添加到您的.bashrc。
編輯:澄清 - 當bash用盡內部機制來查找您鍵入的命令時,它將運行命令名稱作爲參數的command_not_found_handle()函數。所以,你可以用你想要的任何邏輯來定義這個函數。
在Ubuntu 12中,command_not_found_handle函數出現在/ etc/bash的末尾。bashrc(告訴用戶如何在沒有找到的情況下安裝某些命令)。人們可以用它作爲例子。有些人可能希望重命名它,以便在用戶自己的command_not_found_handle函數失敗時調用它。 –
您可以通過編輯您的〜/ .bash_profile中頁面並添加您的可執行文件到列表的末尾的目錄,如
export PATH=$PATH:/your/directory
我通常會創建一個〜/ bin目錄實現這一點,並存儲所有我的這個目錄中的可執行文件。所以我通常這個條目添加到我的〜/ .bash_profile文件中
export PATH=$PATH:/home/yourname/bin/
我所有的我的bin目錄中的腳本(已使用chmod + X之前),只需在控制檯對罵他們的作品之後。
我希望它有幫助。乾杯
你真的不應該這樣做,而是將其輸入到你的.bashrc或會話中以將當前目錄添加到PATH中。
PATH=$PATH:.
當然,這意味着如果有人在一個目錄把具有類似名稱的命令,它可以很容易地被執行。
因此,一個攻擊者:
cd /shared_directory
echo "rm -rf all_your_files" > apropo
chmod +x apropo
然後你:
cd /shared_directory
apro<TAB> (completes to apropo)
(all your files are gone).
如果你想在這裏的目標是命令中肯。
一般來說,更好的解決辦法就是在你的PATH像〜/ bin中的可執行文件鏈接到的東西
所以:
PATH=$PATH:~/bin (in your bashrc or whatever)
ln -s ~/some_executable ~/bin
some_executable
沒錯,感謝您的警告:D – RParadox
+1在'$ PATH'中有'.'的危險。我一直在一些徹頭徹尾的敵對多用戶系統。 –
難道要一個目錄添加到[您的路徑(HTTP:/ /kb.iu.edu/data/acar.html)? – CoffeeRain
是否所有.bsh腳本都在同一個目錄中?或者當你在全局狀態時,你是指系統上的所有.bsh腳本? – Lipongo