打开git bash shell窗口,执行命令并在术语信号后保留

时间:2016-06-12 13:44:27

标签: windows git bash shell maven

我有一个批处理文件,通过打开一些“git bash”shell窗口来设置我的环境。除了一个烦人的功能之外,这完全有效,如果按Ctrl C(或发送任何其他Term信号),整个bash窗口将关闭。

我希望窗口的行为就像它已经正常打开一样,所以当它收到一个术语信号时,它会回到bash提示符。

以下是我的setup.bat文件的当前内容:

C:
cd \project\
start "" "%SYSTEMDRIVE%\Program Files (x86)\Git\bin\sh.exe" --login -i -l -c "source ali.sh && mvn spring-boot:run"
cd \project2\
start "" "%SYSTEMDRIVE%\Program Files (x86)\Git\bin\sh.exe" --login

请注意,第一个启动命令运行maven,当我想重新启动命令时(按Ctrl + C),它会关闭整个窗口。 第二个启动命令在该目录中创建一个新的bash窗口,即使使用Ctrl + C也可以像普通的bash窗口一样工作,但是我希望它在开始时运行命令。

这可能吗? 非常感谢您的帮助

1 个答案:

答案 0 :(得分:6)

这样的事可能适合你:

[HttpGet]
public ActionResult Edit(int ID)
{
    EmployeeDBEntities o = new EmployeeDBEntities();
    Employee e = new Employee();
    e = o.Employees.Single(x => x.EMP_ID  == ID);
    ViewBag.Dept = o.uspDeptCbo().Select(x => new SelectListItem { Value = x.DEPT_ID.ToString() , Text=x.DEPARTMENT  }); 
    return View(e);
}

诀窍是将命令包装在:

<div class="editor-field">
    @Html.DropDownList("Dept",string.Empty)
    @Html.ValidationMessageFor(model => model.DEPT_ID)
</div>

super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); btnT = (Button) findViewById(R.id.btnT); btnF = (Button) findViewById(R.id.btnF); tv=(TextView)findViewById(R.id.textView); yazdir(R.array.metin1,R.array.secim1,0); //first part btnT.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { yazdir(R.array.metin2,R.array.secim2,0); } }); btnF.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { yazdir(R.array.metin2,R.array.secim2,1); } }); //second part btnT.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { yazdir(R.array.metin3,R.array.secim3,0); } }); btnF.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { yazdir(R.array.metin3,R.array.secim3,1); } }); } private Handler mHandler = new Handler(); private Runnable characterAdder = new Runnable() { @Override public void run() { tv.setText(mText.subSequence(0, mIndex++)); if(mIndex <= mText.length()) { mHandler.postDelayed(characterAdder, 20); } else { btnT.setVisibility(View.VISIBLE); btnF.setVisibility(View.VISIBLE); } } }; public void yazdir(int metinGirisi,int secimGirisi,int metinIndex) { // Yazı text=getResources().getStringArray(metinGirisi); mText = text[metinIndex]; mIndex = 0; tv.setText(""); mHandler.removeCallbacks(characterAdder); mHandler.postDelayed(characterAdder, 20); // Buton secim=getResources().getStringArray(secimGirisi); btnT.setText(secim[0]); btnF.setText(secim[1]); btnF.setVisibility(View.INVISIBLE); btnT.setVisibility(View.INVISIBLE); } 是你的shell,可能是C: cd \project\ start "" "%SYSTEMDRIVE%\Program Files (x86)\Git\bin\sh.exe" --login -i -l -c "sh -c 'source ali.sh && mvn spring-boot:run; exec sh'"

您实际上可能只能使用:sh -c '...; exec sh' 为每个命令添加后缀,例如:

sh