OS X 上 sh shell 的配置文件是什么?(例如,bash shell 的 ~/.bash_profile 等)

OS X 上 sh shell 的配置文件是什么?(例如,bash shell 的 ~/.bash_profile 等)

R使用/bin/shshell 环境,并且我正在运行调用的脚本(无法修改),gfortran-4.8所以gfortran我正在创建一个alias。我已将以下行添加到我的/etc/profile和中~/.bash_profile
alias gfortran-4.8='gfortran'

但是,这是调用别名时终端的输出gfortran-4.8

my-MBP:~ myusername$ sh
sh-3.2$ gfortran-4.8 --version
sh: gfortran-4.8: command not found

调用gfortran就可以了:

sh-3.2$ gfortran --version
gfortran: warning: couldn’t understand kern.osversion ‘14.4.0
GNU Fortran (GCC) 4.9.0
Copyright (C) 2014 Free Software Foundation, Inc.

如果不是/etc/profile或,命令应该去~/.bash_profile哪里?alias

编辑:也尝试添加别名,~/.bashrc但是也不起作用。

答案1

当您使用 as 启动 bash 时sh(例如,如果/bin/sh是 的符号链接bash),则 shell 将仅读取/etc/profile~/.profile。shell将不会阅读~/.bash_profile~/.bashrc

在 bash 手册页中搜索短语“使用名称 sh 调用”。

答案2

当 bash 被调用为 时*/sh,仅读取/etc/profile和。${HOME}/.profile

.profile我的(使用 OS X)中有这些行:

if [ -n "${BASH_VERSION}" ]; then
    # include ~/.bashrc if it exists
    if [ -f "${HOME}/.bashrc" ]; then
        . "${HOME}/.bashrc"
    fi
fi

我的.bashrc文件中(除其他内容外)包含以下几行:

if [ -f ~/.bash_aliases ]; then
    . ~/.bash_aliases
fi

现在只需创建一个.bash_aliases包含所有别名的文件。

答案3

~/.bashrc通常,将所有别名和自定义放入 shell 中,然后将~/.bash_profile源文件放入其中,这样更简单,source .bashrc但是,如果您在文件中进行了别名更改,则~/.bashrc它们将不会生效,直到您重新加载 shell 或源文件~/.bashrc

相关内容