2015-11-09 54 views
-2

我有shell命令 對於如文件:測試製作文件名作爲命令

我需要運行這個作爲

#test 

代替#./test

任何人都請幫助!沒有在他們/

+0

是'test'你需要運行的腳本還是shell函數/ etc的文件。你需要能夠運行? –

+0

在名爲'test'的標準路徑中已經有一個命令。通過使用明確分離的名稱來避免整個類的調試問題。也許'testR'或'myTest'等等祝你好運。 – shellter

+0

是的。它包含所有的shell函數,但不是通過./test運行它,而是需要以'test'運行。 – Sandy

回答

2

命令被嘗試作爲

  • shell內建
  • 功能
  • 別名
  • 可執行文件$ PATH中的每個組件

PATH是一個環境變量,它包含一個以冒號分隔的路徑,其中shell或or的一些路徑exec系統函數搜索可執行文件。

PATH=$PWD:$PATH 

預置當前目錄,使您的測試可執行文件可運行。 (因爲hek2mgl提到,由於安全原因,追加通常要好得多,因爲通常不希望用戶可寫路徑覆蓋已經是PATH一部分的寫保護路徑 - 雖然在這種情況下您確實需要它,因爲test是已經是系統級可執行文件)

但是,它仍然會在test shell內建之前。 因此,您應該將其命名爲test以外的其他名稱,或者在修改PATH後繞過$(which test)的內建命名。

在一個shell中,你也可以使它成爲一個調用完整路徑的函數(或別名)。這不會有很多安全隱患。

注意: $PWD是您當前目錄的絕對路徑。您也可以使用.(或另一個相對路徑),使PATH隨着您的cd一起「更改」,但出於安全原因,這被認爲是不好的做法。

+1

永遠不要在'$ PATH'之前加上'$ PWD'。某人可能獲得了您的用戶權限,可能會僞造一些通常只能由root用戶安裝的二進制文件。我已經改變了你的答案... – hek2mgl

+0

@ hek2mgl是的,追加通常更好的原因。但是,如果OP堅持命名可執行文件「test」,則預先考慮是唯一的選擇,因爲測試已經是「通常只能由root安裝的二進制文件」。 – PSkocik

+1

是的,我意識到這一點,並回滾我的編輯。但是,我不推薦使用它。正確的是'./test' – hek2mgl