0
A
回答
2
大概要做到這一點是模仿「的」命令,農曆蘑菇已經建議行爲的最好辦法。
快看看下面的命令
$ strace which ls
的輸出顯示「這」只是通過$ PATH項循環,用命令的域名(「LS」在上面的例子中)連接,並調用它stat64中。如果stat64返回與-1不同的值(表示該文件存在),它會中斷循環。下面是測試命令輸出的相關片段:
...
stat64("/home/mz/bin/ls", 0xbfa84350) = -1 ENOENT (No such file or directory)
stat64("/usr/local/sbin/ls", 0xbfa84350) = -1 ENOENT (No such file or directory)
stat64("/usr/local/bin/ls", 0xbfa84350) = -1 ENOENT (No such file or directory)
stat64("/usr/sbin/ls", 0xbfa84350) = -1 ENOENT (No such file or directory)
stat64("/usr/bin/ls", 0xbfa84350) = -1 ENOENT (No such file or directory)
stat64("/sbin/ls", 0xbfa84350) = -1 ENOENT (No such file or directory)
stat64("/bin/ls", {st_mode=S_IFREG|0755, st_size=96324, ...}) = 0
stat64("/bin/ls", {st_mode=S_IFREG|0755, st_size=96324, ...}) = 0
geteuid32() = 1000
getgid32() = 1000
...
相關問題
- 1. _access是否搜索PATH環境?
- 2. 在Spring應用程序環境中讀取環境變量
- 3. 應用程序環境中的Heroku應用程序ID
- 4. 在Django中搜索應用程序
- 5. Conda激活/停用環境中斷PATH
- 6. mvc4應用程序環境
- 7. 搜索PATH時擴展了環境變量嗎?
- 8. 在應用程序環境中使用鏈接的容器環境變量?
- 9. 在Rails應用程序的環境
- 10. 在C中設置shell的PATH和HOME環境變量
- 11. 搜索欄中的應用程序
- 12. 搜索中的Facebook應用程序
- 13. 如何使用Algolia搜索管理應用程序的多個環境?
- 14. 更改MAMP中的PATH環境變量
- 15. linux中的PATH環境變量
- 16. python中的PATH環境變量
- 17. Android中的PATH環境變量
- 18. 環境變量的順序%PATH%
- 19. 科爾多瓦應用程序在Win Phone 8.1環境中支持的環境
- 20. 在C#Windows窗體應用程序中搜索Microsoft Access記錄?
- 21. 在Windows Phone中按名稱搜索控件c#應用程序
- 22. 如何在目標c-iPhone應用程序中搜索nsmutablearray
- 23. 在我的應用程序環境中啓動android應用程序
- 24. 程序環境中的WSO2應用程序實例ID
- 25. Java應用程序沒有使用正確的PATH環境變量
- 26. C#應用程序需要在Citrix環境中引用遠程工作站
- 27. 我應該在環境變量PATH中添加JAVA_HOME和JRE_HOME嗎?
- 28. C# - 如何遞歸搜索WPF應用程序中的目錄?
- 29. 在多線程應用程序中緩存JNI環境
- 30. 在遠程環境中調試GWT應用程序
FWIW,並不是所有的平臺只使用'PATH'定位可執行文件 –
那豈不是更容易(更安全)有允許可執行文件的白名單中呢? – dirkgently
查看(Linux)shell的「which」命令的源代碼。你會得到一些線索。 –