新的(登录)shell(窗口)在 macOS 上的 $HOME 而不是 $PWD(就像以前那样)打开。是什么赋予了?

新的(登录)shell(窗口)在 macOS 上的 $HOME 而不是 $PWD(就像以前那样)打开。是什么赋予了?

每次打开新的 shell 窗口时,我都会进入主目录,而不是发出打开新 Terminal.app 窗口的命令时所在的当前目录。我的印象是,每个新的 shell 实例都是 macOS 上的登录 shell,以防有帮助。我最近对 ​​.bashrc 进行了一些更改,但据我所知,这不会影响这一点。我还添加了一个 .inputrc (readline rc 文件)。我添加的所有新配置都是从可靠的在线资源中找到的。无论如何,以下是我添加到 .bashrc 中的新配置:

## BETTER BASH HISTORY
# tells readline to perform filename completion case-insensitively
#bind "set completion-ignore-case on"
# filename matching during completion will treat hyphens and underscores as equivalent; 
#+ requires completion-ignore-case on
#bind "set completion-map-case on"
# readline will display all possible matches for an ambiguous pattern at first 
#+ <tab> instead of 2x
#bind "set show-all-if-ambiguous on"
# Append to the history file, don't overwrite it
shopt -s histappend
# Save multi-line commands as one command
shopt -s cmdhist
# Record each line as it gets issued (aka "parallel history"?)
PROMPT_COMMAND='history -a'
# Yuge history. Doesn't appear to slow things down, so why not?
HISTSIZE=500000
HISTFILESIZE=100000
# Avoid duplicate entries
HISTCONTROL="erasedups:ignoreboth"
# Don't record some commands
export HISTIGNORE="&:[  ]*:exit:ls:history:cd:pwd"
# Useful timestamp format
HISTTIMEFORMAT='%F %T '
#
## Better, faster directory navigation
# don't need to type cd, just path to cd; works for .., but not -
#shopt -s autocd    # invalid shell option name
# dirspell and cdspell get bash to autocorrect minor spelling mistakes:
# the former during tab completion, the latter in arguments already supplied to cd
#shopt -s dirspell   # invalid shell option name
shopt -s cdspell
#
# by default, cd will look in the curdir for possible targets you might want to move into.
# this behavior is defined by the environment variable CDPATH="." by default.
# add more paths to this variable by separating them with a colon.
#
# native "jump" to directory from anywhere: we can define and export variables
# containing paths to our most important directories and cd into them
shopt -s cdable_vars

此外,这是我从源代码中使用的 inputrc 文件: https://github.com/mrzool/dotfiles/blob/master/readline/.inputrc

# set editing-mode vi
# set keymap vi
set bell-style none

$if mode=vi
    set keymap vi-command
    "gg": beginning-of-history
    "G": end-of-history
    set keymap vi-insert
    "jj": vi-movement-mode
    "\C-w": backward-kill-word
    "\C-p": history-search-backward
$endif

# Use the text that has already been typed as the prefix for searching through
# commands (i.e. more intelligent Up/Down behavior)
"\e[A": history-search-backward
"\e[B": history-search-forward

# Completion tweaks
set completion-ignore-case on
set completion-map-case on
set show-all-if-ambiguous on
set mark-symlinked-directories on
set match-hidden-files on
# set visible-stats on
set skip-completed-text on
set colored-stats on

# Allow UTF-8 input and output
set input-meta on
set output-meta on
set convert-meta off

# Bash-specific mappings and settings
$if Bash
  Space: magic-space
  \C-w: backward-kill-word
$endif

答案1

删除/注释掉这些行:

PROMPT_COMMAND='history -a'

HISTCONTROL="erasedups:ignoreboth"

export HISTIGNORE="&:[ ]*:exit:ls:history:cd:pwd"

注释掉上面几行似乎已经解决了问题。我怀疑应用程序或 shell 通过cd解析history.

相关内容