为什么 shell 不读取 Bash 启动文件?

为什么 shell 不读取 Bash 启动文件?

我只是想做一个简单的任务,添加我的MySQL目录添加到 PATH 变量中,这样我就可以mysql在 Mac OS X 10.6.6 (Snow Leopard) 上的终端中使用 、 等命令。在修改.profile.bash_profile甚至创建.bashrc并确保我的路径输入正确后,每次我尝试运行mysql命令或点击

echo $PATH

给了我完全相同的结果:

/Users/GabbAHH/.rvm/gems/ruby-1.9.2-p136@rails3tutorial/bin:/Users/GabbAHH/.rvm/gems/ruby-1.9.2-p136@global/bin:/Users/GabbAHH/.rvm/rubies/ruby-1.9.2-p136/bin:/Users/GabbAHH/.rvm/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/local/git/bin:/usr/X11/bin

如您所见,没有 MySQL。后来,我意识到这并不是真正的问题,因为我从/Users/GabbAHH/用户目录中删除了所有这三个文件,但结果仍然相同!

现在,我的启动文件中的脚本如下所示:

export PATH=/usr/local/mysql/bin:$PATH

export PATH="/usr/local/bin:/usr/local/sbin:/usr/local/mysql/bin:$PATH"

我是否做了什么事情导致终端绕过了这些启动文件?它只是从/etc/profile文件夹中读取吗?

这会产生相同的结果吗?无论如何,我已将它们互换了。

另外,如何判断我正在使用交互式 shell 还是非交互式 shell,以及登录 shell 还是非登录 shell?我似乎能够创建文件夹等,而无需输入密码,尽管我记得之前sudo安装时需要输入很多命令宝石用于 Ruby 等。此外,我确实需要在打开/关闭 MySQL 时输入密码。

答案1

只要输入:

echo HELLO, I AM HERE

在您的启动脚本中并正常登录。

如果你发现字符串是不是然后打印出来,是的,你绕过了那个脚本。

除此之外,您还应该告诉我们哪个脚本中bash有一些...相当奇妙的...规则来决定运行哪些脚本 :-) 您可以从 部分获取详细信息INVOCATIONman bash我的特定版本大约有 50 行(并且有 150 列xterm),因此我不会在这里发布它让您感到厌烦。

可以说,这很复杂。

例如,你可能会被这样一个事实所困扰bash第一的~/.bash_profile、和的~/.bash_login~/.profile存在且可读。它可能是一个非交互式 shell,其中规则不同。您可能正在使用--noprofile--norc--rcfile=whatever或运行 shell --posix

尽管可能性不是无限的,但却非常烦人。

答案2

我的问题是存在 .bash_profile,所以我通过修改那里进行了更改。之前它所做的只是设置我的 JAVA_HOME 和 GROOVY_HOME...所以我将更改添加到该文件的末尾,现在一切都运行良好。

谢谢!

相关内容