输入具有特定工作目录

时间:2017-08-14 09:08:54

标签: 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

我想知道是否有任何方法可以在将目录更改为某个特定路径的同时进入unix shell。重要的是:

  1. *应该是用于输入shell和更改目录的单行命令,
  2. 在存在任何新shell之后,它会返回到进入shell之前的最新位置,请参阅第**行。

5 个答案:

答案 0 :(得分:2)

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

% (cd ~/Desktop && bash)

答案 1 :(得分:0)

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

cd ~/Desktop
然后你可以输入:

bash --rcfile ~/.my_bashrc

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

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

答案 2 :(得分:0)

只需这样做。

cd /home/user/Desktop && bash

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

答案 3 :(得分:0)

您可以使用pushdpopd命令:

pushd ~/Desktop && bash ; popd
在这种情况下,

pushd就像"记得和cd" - 它将新目录添加到目录堆栈的顶部,使其成为当前目录。接下来你开始bash 之后你退出bash,popd会带你回到pushd记住的目录。

编辑:将&&更改为;,以便更好地处理错误,如评论中所述。

答案 4 :(得分:0)

我认为回答@hchbaw有点棘手。我刚从run bash command in new shell and stay in new shell after this command executes找到了更有效的解决方案。在我的情况下,我可以使用:

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