2017-08-14 27 views
0

我想做到这一点:输入到UNIX外壳采用特殊的工作目录

[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 

我想知道是否有任何方式在同一时间进入到UNIX shell作为改变一个目录的一些具体路径。这一点很重要:

  1. *线应该是进入一个外壳和改变目录的单行命令,
  2. 任何新的shell存在后,它有望恢复到最新的位置,因为它在进入壳体之前,见线**
+0

2。是shell的默认行为。 –

+0

我知道,请阅读下面的答案,然后你就会知道我为什么提到这个。 – fronthem

回答

2

使用子shell也是改变当前的工作目录暂时有用:

% (cd ~/Desktop && bash) 
0

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

cd ~/Desktop 

然后你可以只需键入:

bash --rcfile ~/.my_bashrc 

在终端直接在桌面目录中打开一个新的外壳。

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

+0

我更新了问题,请再次阅读。 – fronthem

0

只需执行此操作。

cd /home/user/Desktop && bash 

这将尝试改变当前目录切换到/home/user/Desktop,如果它成功改变了外壳bash否则抛出错误。

+0

我更新了问题,请再次阅读。 – fronthem

+0

第二步将在您退出时默认发生。 –

+0

它不会。如果在[zsh]我在'/ usr/local'而不是在'〜'中。很明显,你的解决方案在退出[bash]后不会让我回到'/ usr/local'。 – fronthem

0

您可以使用pushdpopd命令:

pushd ~/Desktop && bash ; popd 

pushd在这种情况下,如“记得和CD” - 它增加了新的目录到堆栈的顶部,使之成为当前目录。接下来你在之后开始bash,你退出bash,popd将你带回由pushd记住的目录。

编辑:更改&&;更好的错误处理,正如评论中指出的。

+0

只有'bash'成功退出。 –