簡體   English   中英

在Ubuntu中使用./運行二進制文件

[英]Run binary with ./ in Ubuntu

我決定學習C ++ (我在C中編寫程序),我一直在閱讀一些教程(以及Stack Overflow上的大量帖子)。 好的,所以我輸入標准的C ++“hello word”,在我的Ubuntu機器上用GCC編譯為“test”。

然后我嘗試通過輸入“test”並按Enter鍵來運行它。 沒有。 事實證明我必須用“./test”運行它。 好的,好的,我會從現在開始這樣做。 但為什么? “./”只是說我應該運行的是當前目錄...當操作系統搜索要運行的東西時,當前目錄不總是PATH的一部分嗎? 我可以這樣做嗎?

是的,當前目錄不是PATH的一部分。 你不希望它,因為那時你可能在一個目錄中,你有一個你不知道的惡意程序。

如果你習慣於運行/ usr / bin / grep,但是你碰巧在一個目錄中,那個壞人把grep的惡意副本放進去,這次你運行grep,然后你運行了grep當前目錄,而不是/ usr / bin / grep。

你當然可以在你的〜/ .profile或〜/ .bash_profile中添加./到你的PATH,但我不推薦它。

如果它讓你感覺更好,15年前當我開始使用類Unix系統時,我也有同樣的挫敗感。

你可以加 ”。” 到你的PATH,但在這種情況下這對你沒有幫助 - “test”是一個內置的shell。

不幸的是,有一個名為“test”的Unix命令......

如果您經常運行命令行腳本,則可以設置命令行別名以消除每次鍵入./的需要。

即使當前目錄位於$ PATH的最開頭,'test'仍然不會在(大多數?)shell上運行它,因為'test'是一個shell內置命令。

沒有 '。' PATH中的(當前目錄)是次要安全措施。 如果您願意,可以隨時添加它,盡管這不是最佳實踐。

如果不清楚,這是Windows與Unix / Linux不同的一個方面。 在Windows上,當前目錄隱含在路徑中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM