我的默认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
答案 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)完全无法影响其父级。