簡體   English   中英

如何從終端中的任何目錄運行linux可執行文件?

[英]How can i run a linux executable from any directory in terminal?

我知道諸如ls,cd和其他命令之類的linux命令是可執行文件,可以從任何目錄訪問。 我的問題是如何從終端的任何目錄運行由我創建的可執行文件?

了解有關PATH變量的信息 它可以由您的外殼設置。 echo $PATH檢查其當前值。 幾個exec(3)函數也使用它。 順便說一句,較長的$PATH是不好的口味和凌亂的(並且可能是低效的)。

如果您的登錄shell是/bin/bash ,則可以編輯~/.bashrc (用於交互式 shell )以添加如下內容

 PATH="$PATH:/something/more"

但是在最近的幾個Linux發行版中, $HOME/bin/目錄已經是PATH一部分,您可以在其中添加腳本,可執行文件或符號鏈接。

因此(當$HOME/bin $PATH提到$HOME/bin時),我不建議擴展您的PATH ,而是建議在該$HOME/bin/目錄中添加適當的可執行文件,可執行腳本或符號鏈接。

當然,如果您在$HOME/someproject/someprog有一些可執行文件,您仍然可以使用以$HOME/someproject/someprog開頭的shell命令顯式運行它。

您的構建過程可能還包含一些安裝步驟。 例如,如果您使用GNU make作為構建自動化工具 ,則您的Makefile可能有一個install假目標,該目標將可執行文件在編譯后復制到適當的位置。 另請參見hier(7)install(1)autoconf

在一些現有的免費軟件的源代碼中尋找靈感,例如在github上

請注意,許多實用程序(例如croncrontab(5) )都沒有使用交互式PATH (而是一些簡化的默認PATH )。 因此,在使用crontab(1)時,您可能希望提供某些腳本的絕對路徑。

可執行文件所在的目錄必須在$PATH可用。 您可以通過修改外殼程序的啟動文件(通常為~/.bash_profile~/.bashrc如果您使用的是bash )來更改路徑,並添加

PATH="$PATH:/some/directory"

... /some/directory是可執行文件所在/some/directory的路徑。

當您打開新的(登錄)shell時,更改將生效。

ls可從任何目錄運行,因為無論何時執行任何程序文件,它都會首先出現在當前目錄中。 如果找到它,它將執行它,否則它將查看您的PATH變量,然后嘗試在那些目錄中找到它,然后執行它。 例如,ls在當前目錄中不存在,但在路徑變量中提到的目錄之一中存在。 做,回顯$ PATH / usr / sbin:/ usr / bin:/ sbin:/ bin:/ usr / games上面的輸出顯示它將在/ usr / sbin,/ usr / bin,/ sbin中檢查“ ls”, / bin等。

現在您可以執行一些有趣的操作,導出PATH =並執行ls o / p:bash:ls:沒有這樣的文件或目錄,因為ls不在您當前的目錄中,並且PATH變量為空。 警告:在運行上述命令之前,請保存PATH變量值。

暫無
暫無

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

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