退出bash模式时更改ksh目录

时间:2014-05-01 14:12:28

标签: bash shell unix

我的默认shell是ksh,但我喜欢使用bash来浏览目录,所以当我找到我想要的东西时,我退出bash并且我希望将我的ksh目录设置为与bash相同的目录,当我退出时。< / p>

例如:

1 - Log in

2 - $ ps -p && | tail -1 | awk '{print $4}'
    ksh
    $ pwd
    /home/myuser

3 - $ bash
    $ ps -p && | tail -1 | awk '{print $4}'
    bash 
    $ pwd 
    /home/myuser
    $ cd dir1
    $ cd dir2
    $ pwd 
    /home/myuser/dir1/dir2
    $ exit

4   $ ps -p && | tail -1 | awk '{print $4}'
    ksh
    $ pwd
    /home/myuser

所以在第3步结束时,当我退出bash shell时,我想让我的ksh拥有与bash相同的目录。

所以在上面的例子中,当我运行第4步时,我想将自己的pwd设置为/ home / myuser / dir1 / dir2。有谁知道如何做到这一点?

我知道如果我键入ksh而不是exit,我将使用相同的目录,但我不想每次需要“浏览”dirs时都开始新的会话。

环境:AIX

3 个答案:

答案 0 :(得分:1)

bash退出时,它会执行文件~/.bash_logout(如果存在)。所以首先写一个记录当前目录的.bash_logout

pwd >~/.place

然后编写一个调用ksh的{​​{1}}函数,然后对文件中记录的目录执行bash

cd

bashcd() { bash --login cd $(cat ~/.place) } 是必需的,因为--login如果不是“登录shell”,则不会运行bash。在.bash_logout文件中定义该功能,然后使用~/.kshrc代替bashcd

答案 1 :(得分:0)

我最终解决了这样的问题:

我在〜/ .bash_logout中添加了以下行:

pwd >~/.place

然后我在.kshrc中创建了这个别名

alias bashcd = 'bash -l;cd `cat ~/.place`'

它的工作就像一个魅力。

答案 2 :(得分:-1)

无法做到。子shell(例如调用bash)完全无法影响其父级。