我在.bash_profile
中定义了三个别名但我的bash shell没有读取它。定义的别名在我的终端中不起作用,我无法解决此问题。
alias handybook="cd /Users/rsukla/development/repos/handybook/"
此行在.bash_profile
内定义,但在我的shell中无效。
到目前为止我尝试过的事情:
我创建了.bashrc
文件并定义了别名,但它也无效。
如果我使用source ~rsukla/.bash_profile
,则别名工作正常,但我想永久使用别名,所以每次打开shell时都不必使用source
当我在alias
中定义时,知道.bash_profile
为什么不起作用的地狱?
答案 0 :(得分:4)
假设:
bash
确实是你的shell(在OS X上是默认的)然后 ~/.bash_profile
应为每个交互式shell加载 ,因为两个终端程序默认创建登录 shell 即可。
Bash 登录 shell来源~/.bash_profile
,但不是~/.bashrc
。
请注意,此与大多数 Linux 发行版不同,其中单个登录shell在启动时执行 ,以后的交互式shell是非登录 shell,只加载~/.bashrc
,而不是~/.bash_profile
。
确保在 登录和非登录交互式shell中加载定义的常见技术是将定义放在~/.bashrc
中,然后从~/.bash_profile
中获取,使用以下行:
[[ -f ~/.bashrc ]] && . ~/.bashrc
您可以通过从现有shell执行bash -l
来按需创建登录shell;如果加载你的别名,那么问题必须是你的默认shell和/或终端程序的配置方式。
echo $SHELL
告诉您默认的shell是什么。Terminal > Preferences...
,标签General
,则设置Shells open with
会告诉您是使用默认shell还是自定义shell。答案 1 :(得分:1)
我们仍然不知道为什么不会自动加载别名。
您的别名应该从.bash_profile
加载。这是OS X中bash的默认行为。
mklement0在their answer in this thread中详细了解了该问题。
打开终端的偏好设置。您可以使用以下命令指定启动shell的命令:
每次在shell打开时指定要提供的文件时,不必手动获取dotfiles。以下是bash
的选项列表:
Usage: bash [GNU long option] [option] ...
bash [GNU long option] [option] script-file ...
GNU long options:
--debug
--debugger
--dump-po-strings
--dump-strings
--help
--init-file
--login
--noediting
--noprofile
--norc
--posix
--protected
--rcfile
--restricted
--verbose
--version
--wordexp
Shell options:
-irsD or -c command or -O shopt_option (invocation only)
-abefhkmnptuvxBCHP or -o option
您可以考虑使用/bin/bash --rcfile alias_file_of_yours
或类似内容。
cd
命令的别名,请转到goat
。作为附注,我建议您查看goat。它可以让您轻松管理这些cd
别名。
我用它而且我写了它。