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和更改目录**
行一个简单的答案是使用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
成功退出时。