Bash 进入具有特定工作目录的unix shell

Bash 进入具有特定工作目录的unix shell,bash,shell,zsh,Bash,Shell,Zsh,我想做到这一点: [zsh]$ pwd /home/user *[zsh]$ bash # enter to a bash shell at the same time as `cd ~/Desktop`. [bash]$ pwd /home/user/Desktop [bash]$ exit [zsh]$ pwd **/home/user 我想知道是否有任何方法可以在将目录更改为某个特定路径的同时进入unixshell。重要的是: 第*行应该是一个单行命令,用于输入shell和更改目录 从任

我想做到这一点:

[zsh]$ pwd
/home/user
*[zsh]$ bash # enter to a bash shell at the same time as `cd ~/Desktop`.
[bash]$ pwd
/home/user/Desktop
[bash]$ exit
[zsh]$ pwd
**/home/user
我想知道是否有任何方法可以在将目录更改为某个特定路径的同时进入unixshell。重要的是:

  • *
    行应该是一个单行命令,用于输入shell和更改目录
  • 从任何新shell存在后,它将返回到最新位置,与进入shell之前一样,请参见第
    **

  • 一个简单的答案是使用bash配置文件切换到正确的目录。通过创建包含一行的~/.my_bashrc文件:

    cd ~/Desktop
    
    然后,您只需键入:

    bash --rcfile ~/.my_bashrc
    
    在终端中直接在桌面目录中打开新外壳


    当然,您可以在~/.my_bashrc(别名等)中添加其他命令,就像在任何常规bashrc文件中一样。

    一个简单的答案是使用bash配置文件切换到正确的目录。通过创建包含一行的~/.my_bashrc文件:

    cd ~/Desktop
    
    然后,您只需键入:

    bash --rcfile ~/.my_bashrc
    
    在终端中直接在桌面目录中打开新外壳

    当然,您可以在~/.my_bashrc(别名等)中添加其他命令,就像在任何常规bashrc文件中一样。

    只需这样做

    cd /home/user/Desktop && bash
    
    这将尝试将当前目录更改为
    /home/user/Desktop
    ,如果成功,将shell更改为
    bash
    ,否则将抛出错误。

    只需执行此操作即可

    cd /home/user/Desktop && bash
    

    这将尝试将当前目录更改为
    /home/user/Desktop
    ,如果成功,将shell更改为
    bash
    ,否则将抛出错误。

    您可以使用
    pushd
    popd
    命令:

    pushd ~/Desktop && bash ; popd
    
    pushd
    在本例中类似于“记住和cd”-它将新目录添加到目录堆栈的顶部,使其成为当前目录。接下来启动
    bash
    ,退出bash后,
    popd
    会将您带回pushd记忆的目录


    编辑:将
    &
    更改为
    用于更好地处理错误,如注释中所述。

    您可以使用
    pushd
    popd
    命令:

    pushd ~/Desktop && bash ; popd
    
    pushd
    在本例中类似于“记住和cd”-它将新目录添加到目录堆栈的顶部,使其成为当前目录。接下来启动
    bash
    ,退出bash后,
    popd
    会将您带回pushd记忆的目录


    编辑:将
    &
    更改为
    ,以便更好地处理错误,如注释中所指出。

    使用子shell也有助于临时更改当前工作目录:

    % (cd ~/Desktop && bash)
    

    使用子shell也有助于临时更改当前工作目录:

    % (cd ~/Desktop && bash)
    

    我认为@hchbaw的答案有点棘手。我刚刚从中找到了一个更有效的解决方案。就我而言,我可以使用:

    bash --rcfile <(echo "cd ~/Desktop")
    

    bash--rcfile我认为@hchbaw的答案有点棘手。我刚刚从中找到了一个更有效的解决方案。就我而言,我可以使用:

    bash --rcfile <(echo "cd ~/Desktop")
    

    bash--rcfile 2。是shell的默认行为。我知道,请阅读下面的答案,然后你就会知道我为什么提到这个。2。是shell的默认行为。我知道,请阅读下面的答案,然后你就会知道我为什么提到这一点。第二步将在退出时默认发生。它不会发生。如果在[zsh]我在
    /usr/local
    而不是
    ~
    呢。很明显,在退出[bash]后,您的解决方案并没有让我回到
    /usr/local
    。您是否尝试了
    退出&cd-
    ,它应该可以工作,但这不是一个有效的解决方案。您只能更改“我的代码”中的行
    *
    。退出时,默认情况下会执行第二步。不会。如果在[zsh]我在
    /usr/local
    而不是
    ~
    呢。很明显,在退出[bash]后,您的解决方案并没有让我回到
    /usr/local
    。您是否尝试了
    退出&cd-
    ,它应该可以工作,但这不是一个有效的解决方案。您只能更改“我的代码”上的行
    *
    。仅当
    bash
    成功退出时。仅当
    bash
    成功退出时。