在OS X中修改环境变量(如PATH)的正确方法是什么?
我稍微看了一下Google,发现了三个要编辑的文件:
- / etc /路径
- 〜/ .profile
- 〜/ .tcshrc
我什至没有这些文件,而且我很确定.tcshrc是错误的,因为OS X现在使用bash。这些变量(尤其是PATH)在哪里定义?
我正在运行OS X v10.5(Leopard)。
在OS X中修改环境变量(如PATH)的正确方法是什么?
我稍微看了一下Google,发现了三个要编辑的文件:
我什至没有这些文件,而且我很确定.tcshrc是错误的,因为OS X现在使用bash。这些变量(尤其是PATH)在哪里定义?
我正在运行OS X v10.5(Leopard)。
Answers:
布鲁诺是正确的。我已经进行了广泛的研究,如果您想设置所有GUI应用程序中都可用的变量,则唯一的选择是/etc/launchd.conf
。
请注意,environment.plist不适用于通过Spotlight启动的应用程序。这是史蒂夫·塞克斯顿(Steve Sexton)在此处记录的。
打开终端提示
类型sudo vi /etc/launchd.conf
(注意:此文件可能尚不存在)
将如下内容放入文件中
# Set environment variables here so they are available globally to all apps
# (and Terminal), including those launched via Spotlight.
#
# After editing this file run the following command from the terminal to update
# environment variables globally without needing to reboot.
# NOTE: You will still need to restart the relevant application (including
# Terminal) to pick up the changes!
# grep -E "^setenv" /etc/launchd.conf | xargs -t -L 1 launchctl
#
# See http://www.digitaledgesw.com/node/31
# and http://stackoverflow.com/questions/135688/setting-environment-variables-in-os-x/
#
# Note that you must hardcode the paths below, don't use environment variables.
# You also need to surround multiple values in quotes, see MAVEN_OPTS example below.
#
setenv JAVA_VERSION 1.6
setenv JAVA_HOME /System/Library/Frameworks/JavaVM.framework/Versions/1.6/Home
setenv GROOVY_HOME /Applications/Dev/groovy
setenv GRAILS_HOME /Applications/Dev/grails
setenv NEXUS_HOME /Applications/Dev/nexus/nexus-webapp
setenv JRUBY_HOME /Applications/Dev/jruby
setenv ANT_HOME /Applications/Dev/apache-ant
setenv ANT_OPTS -Xmx512M
setenv MAVEN_OPTS "-Xmx1024M -XX:MaxPermSize=512m"
setenv M2_HOME /Applications/Dev/apache-maven
setenv JMETER_HOME /Applications/Dev/jakarta-jmeter
通过打开终端窗口并键入来证明您的变量正在工作,export
并且您应该看到新的变量。这些也将在IntelliJ IDEA和您通过Spotlight启动的其他GUI应用程序中提供。
launchd.conf
是一种方法,但是需要重新启动(重新启动启动)。如果你想避免重新启动,请参阅我的回答stackoverflow.com/questions/135688/...
您可以使用设置启动的环境(以及扩展名,从Spotlight开始的任何东西)launchctl setenv
。例如设置路径:
launchctl setenv PATH /opt/local/bin:/opt/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin
或者,如果您要设置路径.bashrc
或类似路径,则将其镜像到启动状态:
PATH=/opt/local/bin:/opt/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin
launchctl setenv PATH $PATH
无需重新启动,尽管如果您希望应用拾取更改后的环境,则需要重新启动它。
这包括已经在Terminal.app下运行的所有shell,尽管如果您在那里,则可以直接设置环境,例如,export PATH=/opt/local/bin:/opt/local/sbin:$PATH
使用bash或zsh。
要在重启后保留更改,您可以从以下位置设置环境变量/etc/launchd.conf
,如下所示:
setenv PATH /opt/local/bin:/opt/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin
launchd.conf
重新启动时自动执行。
如果您希望这些更改现在生效,则应使用此命令进行重新处理launchctl.conf
(感谢@mklement提示!)
egrep -v '^\s*#' /etc/launchd.conf | launchctl
您可以通过命令了解更多信息launchctl
及其加载方式。launchd.conf
man launchctl
environment.plist
做不会。
etc/launchd.conf
重新启动之前应用更改的正确方法是使用@MatthewMcCullough的答案中的方法:egrep "^setenv\ " /etc/launchd.conf | xargs -t -L 1 launchctl
。
最高包括OS X v10.7(Lion),您可以在以下位置进行设置:
~/.MacOSX/environment.plist
看到:
对于终端机中的PATH,您应该可以在.bash_profile
或中设置.profile
(尽管您可能必须创建它)
对于OS X v10.8(Mountain Lion)及更高版本, 您需要使用launchd
和launchctl
。
preferences.plist
在OS X 10.5上使用情况并不理想,因为当时preferences.plist
还没有读取通过聚光灯启动的应用程序,请参阅Louis对Matthew的回答和email的评论。esm.psu.edu/ pipermail / macosx-emacs / 2010年5月/002113.html。对于OS X 10.6,environment.plist
它应能正常工作。
假设您~/.bash_profile
在以下代码段中有自己喜欢的环境变量定义:
export JAVA_HOME="$(/usr/libexec/java_home -v 1.8)"
export GOPATH="$HOME/go"
export PATH="$PATH:/usr/local/opt/go/libexec/bin:$GOPATH/bin"
export PATH="/usr/local/opt/coreutils/libexec/gnubin:$PATH"
export MANPATH="/usr/local/opt/coreutils/libexec/gnuman:$MANPATH"
我们需要启动代理,它将在每次登录时按需运行,并随时随地运行,以将这些变量加载到用户会话中。我们还需要一个shell脚本来解析这些定义并构建必要的命令以由代理执行。
在目录中创建带有plist
后缀(例如,名为osx-env-sync.plist
)的~/Library/LaunchAgents/
文件,其内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>osx-env-sync</string>
<key>ProgramArguments</key>
<array>
<string>bash</string>
<string>-l</string>
<string>-c</string>
<string>
$HOME/.osx-env-sync.sh
</string>
</array>
<key>RunAtLoad</key>
<true/>
</dict>
</plist>
-l
这里的参数很关键;必须使用登录shell执行shell脚本,以便~/.bash_profile
在执行该脚本之前首先获取它。
现在,shell脚本。~/.osx-env-sync.sh
使用以下内容创建它:
grep export $HOME/.bash_profile | while IFS=' =' read ignoreexport envvar ignorevalue; do
launchctl setenv ${envvar} ${!envvar}
done
确保shell脚本是可执行的:
chmod +x ~/.osx-env-sync.sh
现在,为当前会话加载启动代理:
launchctl load ~/Library/LaunchAgents/osx-env-sync.plist
(重新)启动GUI应用程序,并验证它可以读取环境变量。
设置是持久的。它将在重新启动和重新登录后继续存在。
初始设置(刚刚完成)之后,如果您想再次反映~/.bash_profile
整个环境中的任何更改,那么重新运行该launchctl load ...
命令将无法执行您想要的操作。相反,您会收到类似以下的警告:
<$HOME>/Library/LaunchAgents/osx-env-sync.plist: Operation already in progress
为了重新加载环境变量,而无需执行注销/登录过程,请执行以下操作:
launchctl unload ~/Library/LaunchAgents/osx-env-sync.plist
launchctl load ~/Library/LaunchAgents/osx-env-sync.plist
最后,请确保您重新启动已经运行的应用程序(包括Terminal.app),以使他们知道所做的更改。
我还将这里的代码和解释推到了GitHub项目:osx-env-sync。
我希望这将是最终的解决方案,至少对于最新版本的OS X(Yosemite和El Capitan)而言。
做:
vim ~/.bash_profile
该文件可能不存在(如果不存在,则可以创建它)。
输入以下内容并保存文件:
export PATH=$PATH:YOUR_PATH_HERE
跑
source ~/.bash_profile
export
是我要建议的,因为BASH不支持setenv
在OS X中处理环境变量时,基本上要解决两个问题。第一个问题是从Spotlight调用程序(Mac菜单/状态栏右侧的放大镜图标),第二个问题是从Dock调用程序。 。从一个终端应用程序调用程序/实用程序是微不足道的,因为它从读出的标准外壳的位置的环境(~/.profile
,~/.bash_profile
,~/.bashrc
等)
当调用从Dock程序,使用~/.MacOSX/environment.plist
其中所述<dict>
元素包含的序列
<key>KEY</key><string>theValue</string>
的元素。
从Spotlight调用程序时,请确保已使用所需的所有键/值设置来设置启动程序。
为了同时解决这两个问题,我在用户帐户上使用了登录项(通过“系统偏好设置”工具设置)。登录项目是一个bash脚本,它调用Emacs lisp函数,尽管当然可以使用他们喜欢的脚本工具来完成相同的事情。这种方法的额外好处是它可以随时工作,并且不需要重新启动,即~/.profile
,可以在Dock中编辑,运行登录项目,并使更改对Dock或Spotlight中新调用的程序可见。
细节:
登录项目: ~/bin/macosx-startup
#!/bin/bash
bash -l -c "/Applications/Emacs.app/Contents/MacOS/Emacs --batch -l ~/lib/emacs/elisp/macosx/environment-support.el -f generate-environment"
Emacs Lisp功能: ~/lib/emacs/elisp/macosx/envionment-support.el
;;; Provide support for the environment on Mac OS X
(defun generate-environment ()
"Dump the current environment into the ~/.MacOSX/environment.plist file."
;; The system environment is found in the global variable:
;; 'initial-environment' as a list of "KEY=VALUE" pairs.
(let ((list initial-environment)
pair start command key value)
;; clear out the current environment settings
(find-file "~/.MacOSX/environment.plist")
(goto-char (point-min))
(setq start (search-forward "<dict>\n"))
(search-forward "</dict>")
(beginning-of-line)
(delete-region start (point))
(while list
(setq pair (split-string (car list) "=")
list (cdr list))
(setq key (nth 0 pair)
value (nth 1 pair))
(insert " <key>" key "</key>\n")
(insert " <string>" value "</string>\n")
;; Enable this variable in launchd
(setq command (format "launchctl setenv %s \"%s\"" key value))
(shell-command command))
;; Save the buffer.
(save-buffer)))
注意:此解决方案是在我添加我的解决方案之前合并而成的,尤其是Matt Curtis提供的解决方案,但是我故意尝试使自己的~/.bash_profile
内容平台保持独立,并将launchd
环境设置(仅Mac设施)放在单独的脚本中。
EnvPane是另一个免费的开源Mac OS X v10.8(Mountain Lion)首选项窗格/environment.plist解决方案。
EnvPane的源代码可在GitHub上获得。EnvPane看起来具有与RCEnvironment类似的功能,但是,它似乎可以立即更新其存储的变量,即无需重新启动或登录,这是受欢迎的。
如开发商所说:
EnvPane是Mac OS X 10.8(Mountain Lion)的首选项窗格,可让您为图形会话和终端会话中的所有程序设置环境变量。它不仅可以恢复对Mountain Lion中〜/ .MacOSX / environment.plist的支持,而且还可以立即发布对环境的更改,而无需注销并重新登录。<SNIP> EnvPane包括(并自动安装)启动的代理程序,该代理程序将在1)登录后早期运行,以及2)每当〜/ .MacOSX / environment.plist更改时运行。代理读取〜/ .MacOSX / environment.plist,并通过与launchctl setenv和launchctl unsetenv相同的API将环境变量从该文件导出到当前用户的启动实例。
免责声明:我与开发人员或其项目无关。
PS我喜欢这个名字(听起来像“ Ends Pain”)。
从(至少)macOS 10.12.6(Sierra)起,此方法似乎已停止为Apache httpd使用(对于system
和user
选项,都适用launchctl config
)。其他程序似乎没有受到影响。可以想象这是httpd中的错误。
这涉及OS X 10.10+(10.11+,特别是由于无根模式,该模式/usr/bin
不再可写)。
我已经在多个地方读到,由于OS X中的一个错误(根据个人经验,这似乎是事实),launchctl setenv PATH <new path>
用于设置PATH
变量的方法不起作用。我发现PATH
可以为不是从shell启动的应用程序设置另一种方法:
sudo launchctl config user path <new path>
该选项记录在launchctl手册页中:
配置系统| 用户参数值
设置launchd(8)域的持久配置信息。只能配置系统域和用户域。持久性存储的位置是实现细节,并且只能通过此子命令对该存储进行更改。需要重新启动才能使通过此子命令所做的更改生效。
[...]
路径
将目标域内所有服务的PATH环境变量设置为字符串值。字符串值应符合environ(7)中PATH环境变量概述的格式。请注意,如果服务指定其自己的PATH,则特定于服务的环境变量将具有优先权。
注意:此功能不能用于为域内的所有服务设置常规环境变量。它是有意限制PATH环境变量的范围,出于安全考虑,别无其他。
我已经确认可以与从Finder(getenv
用于获取PATH)启动的GUI应用程序一起使用。请注意,您只需执行一次,更改将通过重新启动保持不变。
sudo launchctl procinfo <gui-pid>
显示新设置的PATH
环境。但sudo launchctl config user path <new path>
实际上是为所有用户设置的...(通过添加新用户并使用Sublime Text的python控制台进行确认)
sudo launchctl config user path
发生后的第一次(您似乎在假设?)。
launchctl
也不会允许你任意设置环境变量。该PATH
变量是一个例外。
在Mountain Lion上,所有/etc/paths
和/etc/launchd.conf
编辑均无效!
苹果的开发者论坛说:
“更改.app本身的Info.plist,使其包含具有所需环境变量的“ LSEnvironment”字典。
〜/ .MacOSX / environment.plist不再受支持。”
因此,我直接编辑了应用程序Info.plist
(右键单击“ AppName.app”(在本例中为SourceTree),然后单击“ Show package contents
”)。
我添加了一个新的键/字典对,名为:
<key>LSEnvironment</key>
<dict>
<key>PATH</key>
<string>/Users/flori/.rvm/gems/ruby-1.9.3-p362/bin:/Users/flori/.rvm/gems/ruby-1.9.3-p362@global/bin:/Users/flori/.rvm/rubies/ruby-1.9.3-p326/bin:/Users/flori/.rvm/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:</string>
</dict>
(请参阅:Apple的LaunchServicesKeys文档)
现在,该应用程序(在我的情况下为Sourcetree)使用给定的路径并与Git 1.9.3一起使用:-)
PS:当然,您必须调整Path条目以适合您的特定路径需求。
Info.plist
文件,则该应用程序无法加载:LSOpenURLsWithRole() failed with error -10810 for the file /Applications/Slack.app.
虽然这里的答案不是“错误的”,但我要补充一点:对于给定用户交互运行的所有进程,请不要在OS X中进行会影响“所有进程”甚至是外壳程序之外的环境变量更改。
以我的经验,对所有进程的环境变量(如PATH)的全局更改甚至比Windows上更容易使OS X崩溃。原因是,许多OS X应用程序和其他软件(尤其是OS本身的组件,尤其是OS本身的组件)都依赖于底层的UNIX命令行工具,并假定系统随附的这些工具的版本行为正常,并且这样做时不必使用绝对路径(类似的注释适用于动态加载的库和DYLD_ *环境变量)。例如,考虑一下关于替换有关由OS X提供的诸如Python和Ruby之类的解释器版本的各种Stack Overflow问题的最高评价的回答通常是“不要这样做”。
在这方面,OS X实际上与其他类似UNIX的操作系统(例如Linux,FreeBSD和Solaris)没有什么不同。苹果没有提供一种简单的方法来解决这个问题的最可能原因是因为它破坏了事情。在某种程度上,Windows不太容易出现这些问题,这是由于两件事:(1)Windows软件不像UNIX软件那样倾向于依赖命令行工具,以及(2)Microsoft已经拥有由于存在“ DLL地狱”和由影响所有进程的更改引起的安全问题的广泛历史,因此它们已更改了Windows新版本中的动态加载行为,从而限制了诸如PATH之类的“全局”配置选项的影响。
不管是否“ Lame”,如果将此类更改限制在较小的范围内,您将拥有一个更加稳定的系统。
有时,所有先前的答案都根本无效。如果您想访问M2_HOME
Eclipse或IntelliJ IDEA中的系统变量(例如),则在这种情况下对我有用的唯一事情是:
首先(步骤1)进行编辑,/etc/launchd.conf
以包含如下一行:“ setenv VAR value”,然后(步骤2)重新启动。
仅仅修改.bash_profile是行不通的,因为在OS X中应用程序无法像在其他Unix中那样启动。它们不继承父级的shell变量。所有其他修改由于我不知道的原因而无法使用。也许其他人可以对此进行澄清。
追逐“ 环境变量”首选项窗格并发现链接已断开,并且在Apple网站上进行的搜索似乎表明他们已将其忘记了……我回到了难以捉摸的启动过程中。
在我的系统(Mac OS X 10.6.8)上,似乎environment.plist 中定义的变量已可靠地导出到从Spotlight启动的应用程序(通过启动)。我的麻烦是,这些var无法在Terminal中导出到新的bash会话中。即我遇到的问题与这里描述的相反。
注意:environment.plist看起来像JSON,而不是XML,如上所述
我可以通过编辑〜/ MacOSX / environment.plist 来使Spotlight应用程序看到var,并且 可以通过将以下内容添加到我的.profile文件中来将相同的var强制进入新的Terminal会话:
eval $(launchctl export)
man launchd
,man launchctl
和man launchd.conf
在终端窗口。即使Mac Developer Library有点滞后,高兴的Apple也会使手册页保持最新。
就像Matt Curtis给出的答案一样,我通过launchctl设置了环境变量,但是我将其包装在一个名为export的函数中,以便每当在我的.bash_profile中导出一个像普通的变量一样,也由launchctl设置。这是我的工作:
我的.bash_profile仅包含一行,(这只是个人喜好。)
source .bashrc
我的.bashrc具有:
function export()
{
builtin export "$@"
if [[ ${#@} -eq 1 && "${@//[^=]/}" ]]
then
launchctl setenv "${@%%=*}" "${@#*=}"
elif [[ ! "${@//[^ ]/}" ]]
then
launchctl setenv "${@}" "${!@}"
fi
}
export -f export
上面的代码将使Bash内置的“导出”过载,并且将正常导出所有内容(您会注意到我使用它导出了“导出”!),然后无论是否使用以下任何一项,都可以通过launchctl在OS X应用程序环境中正确设置它们:
export LC_CTYPE=en_US.UTF-8
# ~$ launchctl getenv LC_CTYPE
# en_US.UTF-8
PATH="/usr/local/bin:${PATH}"
PATH="/usr/local/opt/coreutils/libexec/gnubin:${PATH}"
export PATH
# ~$ launchctl getenv PATH
# /usr/local/opt/coreutils/libexec/gnubin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin
export CXX_FLAGS="-mmacosx-version-min=10.9"
# ~$ launchctl getenv CXX_FLAGS
# -mmacosx-version-min=10.9
这样,我不必每次都将每个变量发送到launchctl,而我可以按照自己的方式设置.bash_profile / .bashrc。打开一个终端窗口,检查您感兴趣的环境变量launchctl getenv myVar
,在.bash_profile / .bashrc 中进行更改,关闭终端窗口并重新打开,然后使用launchctl再次检查该变量,然后更改。
再次,与后山狮世界的其他解决方案一样,要使任何新的环境变量可用于应用程序,您都需要在更改后启动或重新启动它们。
这是做您想要的事情的一种非常简单的方法。就我而言,这使Gradle可以正常工作(适用于Android Studio)。
运行以下命令:
sudo nano /etc/paths
要么 sudo vim /etc/paths
出现提示时输入密码。
打开一个新的终端窗口,然后键入:
echo $PATH
您应该看到新路径附加到PATH的末尾。
我从这篇文章中得到了这些细节:
我认为OP正在寻找一种简单的,类似于Windows的解决方案。
干得好:
http://www.apple.com/downloads/macosx/system_disk_utilities/environmentvariablepreferencepane.html
简明扼要地了解每个文件的用途
~/.profile
每次启动Terminal.app时来源~/.bashrc
在“传统上”设置了Bash环境的所有导出语句的位置/etc/paths
是Mac OS中的主文件,其中包含用于为所有用户构建PATH环境变量的默认路径列表/etc/paths.d/
包含保存其他搜索路径的文件非终端程序不会继承终端所能执行的系统范围的PATH和MANPATH变量!要为特定用户启动的所有进程设置环境,从而使环境变量可用于Mac OS X GUI应用程序,必须在您的计算机中定义这些变量。~/.MacOSX/environment.plist
(Apple Technical Q&A QA1067)中
使用下面的命令行到您的同步environment.plist
与/etc/paths
:
defaults write $HOME/.MacOSX/environment PATH "$(tr '\n' ':' </etc/paths)"
在OS X v10.10(Yosemite),OS X v10.11(El Capitan),macOS v10.12(Sierra)或macOS v10.13(High Sierra)中未使用/etc/launchd.conf。
从launchctl
手册页:
/etc/launchd.conf file is no longer consulted for subcommands to run during early boot time;
this functionality was removed for security considerations.
此“ 不同问题”答案中描述的方法对我有效(重新引导后):从Dock或Spotlight启动的应用程序继承了我在中设置的环境变量~/Library/LaunchAgents/my.startup.plist
。(在我的情况,我需要设置LANG
,到en_US.UTF-8
为一个崇高的文本插件。)
该$PATH
变量也受制于该变量path_helper
,后者又利用中的/etc/paths
文件和文件/etc/paths.d
。
有关更全面的描述,请参见《豹》(2008-11)中的PATH和其他环境问题。
对于单个用户修改,请使用~/.profile
您列出的内容。以下链接说明了Bash何时读取其他文件。
http://telin.ugent.be/~slippens/drupal/bashrc_and_others
如果要为gui应用程序设置环境变量,则需要〜/ .MacOSX / environment.plist文件
打开终端程序(默认在“应用程序/实用工具”文件夹中)。运行以下命令
touch ~/.bash_profile; open ~/.bash_profile
这将在您的默认文本编辑器中打开文件。
以Android SDK为例:
您需要将路径添加到Android SDK平台工具和工具目录。在我的示例中,我将使用“ / Development / android-sdk-macosx”作为安装SDK的目录。添加以下行:
export PATH=${PATH}:/Development/android-sdk-macosx/platform-tools:/Development/android-sdk-macosx/tools
保存文件并退出文本编辑器。执行您的.bash_profile以更新您的PATH:
source ~/.bash_profile
现在,每次打开终端程序时,PATH都将包含Android SDK。
这样做确实非常容易和快捷。首先从终端创建一个〜/ .bash_profile:
touch .bash_profile
然后
open -a TextEdit.app .bash_profile
加
export TOMCAT_HOME=/Library/Tomcat/Home
节省文档,您就完成了。
这很简单。编辑文件.profile
(vi,nano,Sublime Text或其他文本编辑器)文件。您可以在~/
目录(用户目录)中找到它,并进行如下设置:
export MY_VAR=[your value here]
Java主页示例:
export JAVA_HOME=/Library/Java/JavaVirtualMachines/current
保存并返回到终端。
您可以使用以下命令重新加载它:
source .profile
或关闭并打开终端窗口。
这里有两种弹壳。
在这里重要的是要了解,使用Bash,文件.bashrc
只能由交互且非登录的shell读取,您会发现人们经常.bashrc
在其中加载.bash_profile
来克服此限制。
现在您已经有了基本的了解,让我们继续介绍如何建议您进行设置。
.bash_file:
#!/bin/bash
source ~/.profile # Get the PATH settings
source ~/.bashrc # Get Aliases and Functions
#
登录外壳
/etc/profile
Shell首先执行file中的命令/etc/profile
。具有root特权的用户可以设置此文件来为运行Bash的用户建立系统范围的默认特征。
.bash_profile
.bash_login
.profile
接下来的外壳看起来的~/.bash_profile
,~/.bash_login
和~/.profile
(〜/是你的home目录短手),按照这个顺序,执行第一这些文件找到的命令。您可以将命令放在这些文件之一中,以覆盖中设置的默认值/etc/profile
。在虚拟终端上运行的外壳程序不会在这些文件中执行命令。
.bash_logout
注销时,bash将执行~/.bash_logout
文件中的命令。该文件通常包含在会话后清除的命令,例如那些删除临时文件的命令。
交互式非登录外壳
/etc/bashrc
尽管不是直接由bash ~/.bashrc
调用,但是许多文件都调用/etc/bashrc
。此设置允许使用root特权的用户为非登录bash shell建立系统范围的默认特征。
.bashrc
交互式非登录外壳程序执行~/.bashrc
文件中的命令。通常,用于登录shell的启动文件(例如.bash_profile
)运行该文件,因此登录shell和非登录shell都运行中的命令.bashrc
。
因为其中的命令.bashrc
可能会执行多次,并且由于子外壳继承了导出的变量,所以最好将添加到现有变量中的命令放入.bash_profile
文件中。
env "switch.1.disabled=true" open -n /Applications/Eclipse.app/
在新的系统环境下启动GUI应用程序。