如何在bash --login -i上更改bash中的目录

时间:2016-12-07 19:42:30

标签: linux bash cygwin

我正在使用Cygwin并希望使用diff params运行它,这样我就可以在Windows启动时立即更改dir。

例如

bash --login -i ; cd /

bash --login -i ; cd /tmp

cd不起作用,如何将更改目录传递给

bash --login -i

仅供参考我无法将cd放入.bash,必须将其传入

试了这个没有运气

bash --login -i -s cd /tmp;

3 个答案:

答案 0 :(得分:2)

一个hack是使用-c来更改目录,然后立即启动一个新shell来代替第一个。工作目录是继承的。请注意,任何 shell(支持exec)都可用于启动新进程;更改工作目录后,即可启动bash的交互式登录实例。

bash -c "cd /tmp; exec bash --login -i"

答案 1 :(得分:1)

我使用.bashrc.bash_logout来恢复之前的位置。在.bash_logout中,我将当前目录存储在文件中:

if [ -d ~/.recent-locations ]; then
    pwd > ~/.recent-locations/locus-$RANDOM
fi

并在.bashrc中消耗存储的位置:

if [ -d .recent-locations ]; then
    for x in $(ls .recent-locations); do
        dstdir=$(cat .recent-locations/$x)
        rm .recent-locations/$x
        cd $dstdir
        break
    done
fi

为此,您需要使用Ctrl-Dlogout明确注销;另一方面,如果您不想记录您的位置,您只需通过窗口管理器关闭终端窗口。

答案 2 :(得分:0)

好的,所以我找到了我需要的解决方案。 在Cygwin .bashrc我把

"$OLDPWD" 并且它会自动切换到我在Windows中的最后一个目录,然后分叉Cygin,

希望能帮助别人,

肖恩