2017-12-27 640 views
0

我創建了一個shell副本,並且遇到了可執行自制程序的問題。我的意思是,當我想執行諸如javalswc等等的東西時,一切正常...... PATH變量中已經存在的所有東西。允許使用execvp執行程序

現在我想能夠執行一個「myls」命令,它是原始ls的副本。問題是我的程序沒有在PATH變量中註冊,所以當我嘗試execvp("myls", …)時,出現錯誤「沒有這樣的文件或目錄」。

我想知道我如何管理這個問題,並能夠按照這個層次來執行我的命令:

src 
include 
bin 
makefile 
executable <- this one is my main executable 
myLs 
    executableLS <- would like to be able to call this one through execvp 
myPs 
    executablePS <- would like to be able to call this one through execvp 
+2

要麼將​​你的程序放在你的'$ PATH'目錄下,要麼把你的程序放在'$ PATH'上的目錄,或者使用適當的路徑名(相對或絕對)來標識要運行的程序。 –

回答

2

要允許與execvp()要執行的程序,你必須:

  • 或者把你的程序放在你的目錄$PATH,
  • 或者把程序的目錄放在你的$PATH,
  • 或安排使用程序的絕對路徑名(),
  • 或者安排使用程序的正確相對路徑名(../useful/myLs或甚至./myLs)。

注意當它看到的命令名稱不包含/execvp()只搜索上$PATH(所以./myLs停止尋找它的$PATH)。相對的名字通常是最不有用的;如果更改目錄,則相對路徑名可能會發生更改。

如有疑問,請確保您有一個目錄$HOME/bin,將您的程序放在那裏(或符號鏈接到您的程序),並將$HOME/bin添加到您的路徑。它生活在我的PATH的前面;我想我知道我在做什麼。

+0

噢,這正是我一直在尋找的!謝謝你一切正在工作! – LenweSeregon

相關問題