2016-03-03 52 views
1

環境:mac運行java exec命令,總是需要完整的絕對路徑給應用程序?

前提條件:我已經配置到我的bash_profile'adb'完整路徑。當我在終端上嘗試輸入'adb'時,它正在工作。

但是,我試圖從java執行'adb'命令,'adb'不工作,而是我需要傳遞完整的adb路徑才能使其工作。

我想這可能與bash_profile設置有關,任何人都知道這個問題的確切原因?

+2

*「我試圖從java執行'adb'命令」* - 如何? – MadProgrammer

+0

相關代碼在哪裏? – f1sh

回答

1

Runtime.getRuntime().exec()運行/bin/sh -c <command>。如果這是或指向系統上的bash shell:除非明確指出(--login),否則非交互式bash不會讀取.bash_profile

documentation

當bash被調用以交互登錄殼,或作爲非交互式殼與--login選項,它首先讀取並從文件中執行命令的/ etc /配置文件,如果該文件存在。讀取該文件後,它會按照該順序查找〜/ .bash_profile,〜/ .bash_login和〜/ .profile,並從第一個存在且可讀的命令讀取和執行命令。當shell開始禁止這種行爲時,可以使用--noprofile選項。

這有點複雜,但非交互式的非登錄bash實例不讀取配置文件。

您的路徑設置不會被子shell獲取(實際上/bin/sh其中甚至可能根本就不是bash)

如果需要,可以通過添加appropriate entry to to /etc/paths.d將系統範圍的路徑添加到adb

相關問題