我已经安装了Cygwin,并且希望每次启动时都能在特定的目录下启动Bash。我该如何实现这个功能?
~/.bashrc
文件中,你可以在文件末尾添加cd
到该目录,或者将你的$HOME
更改为该目录(已经尝试过但没有成功)。在您的~/.bash_profile
中,您可以简单地写入cd /cygdrive/c/path/to/where/you/want/cygwin/to/start
。您将在cygwin安装文件夹下找到此文件,在<path_to_cygwin>\home\<user>\.bash_profile
下。(在我的情况下:C:\cygwin64\home\User\.bash_profile
)。
Cygwin上的Bash在启动时会进入您的主文件夹,就像在Linux上一样,Cygwin尽可能地模仿它。因此,您只需要更改您的主文件夹。
(请注意,您的Cygwin文件夹不必与Windows用户主文件夹相同。默认情况下,它们是不同的,但是您可以通过将类似/cygdrive/c/Users/myid
的内容放入/etc/passwd
中的Cygwin用户条目中使它们相同。)
Python脚本
!!在使用之前,请将任何字符串添加到末尾.bashrs!!
使用name_script.py c:\path
path_bachrc - .bashrc的路径
cmd - cygwin.bat的路径
#***********************************************#
# gangelXXX@gmail.com #
#***********************************************#
import argparse
import subprocess
import os
path_bachrc = 'c:/PP/cygwin/home/adm/.bashrc'
cmd = 'c:\PP\cygwin\Cygwin.bat'
def delEndLineFromFile(filename):
with open(filename, 'r') as f:
aList = f.readlines()
bList = aList[0:-1]
with open(filename, 'w') as fd:
fd.writelines(bList)
parser = argparse.ArgumentParser()
parser.add_argument("newPath", type=str, help="New path in .bachrc cygwin")
args = parser.parse_args();
delEndLineFromFile(path_bachrc);
p = args.newPath;
pNew = 'cd /cygdrive/' + p[:1] + p[2:].replace('\\', '/')
print(pNew)
with open(path_bachrc, 'a') as f:
f.write(pNew)
PIPE = subprocess.PIPE
p = subprocess.Popen(cmd, shell = True)
~/.bashrc
是什么鬼?编辑:整个文件似乎都是一个巨大的注释。 - Puppy~
是指代你的主目录,也就是你登录时所在的目录。通常为/home/用户名
,其中用户名
就是你的实际用户名。.bashrc
是一个文件,在你登录时会被 bash 读取以设置你希望的环境配置。 - Kevin