我已经在.zshrc
内放置了一个bash文件,并在每次打开新的终端窗口或源.zshrc
时尝试了各种不同的运行方式,但是没有运气。
仅供参考:在.bashrc
上运行正常
这是.zshrc
脚本:
#Check if ampps is running
bash ~/ampps_runner.sh & disown
不同的方法:
#Check if ampps is running
sh ~/ampps_runner.sh & disown
另一种方法:
#Check if ampps is running
% ~/ampps_runner.sh & disown
以上所有方法均无效(这意味着它假定要运行一个名为ampps的应用程序,但不能在zsh中运行。
注意:在从bash切换到zsh之前,它运行良好。因此它没有权限或语法问题。
更新:ampps_runner.sh的内容
#! /usr/bin/env
echo "########################"
echo "Checking for ampps server to be running:"
check=$(pgrep -f "/usr/local/ampps" )
#[ -z "$check" ] && echo "Empty: Yes" || echo "Empty: No"
if [ -z "$check" ]; then
echo "It's not running!"
cd /usr/local/ampps
echo password | sudo -S ./Ampps
else
echo "It's running ..."
fi
答案 0 :(得分:0)
(1)我相信 ~/.ampps_runner.sh
是 bash
脚本,因此,其第一行应为
#!/bin/bash
或
#!/usr/bin/bash
不是
#! /usr/bin/env
(2)然后,在 zsh
脚本(~/.zshrc
)中的调用应为:
~/ampps_runner.sh
(3)注意: ~/.ampps_runner.sh
应该为executable
。将其更改为可执行文件:
$ chmod +x ~/ampps_runner.sh
答案 1 :(得分:0)
从bash
终端临时运行zsh
的最简单方法是
exec bash
或者只是
bash
然后,您可以运行以前只能在bash中运行的命令。一个例子
help exec
退出
exit
现在您又回到了原来的外壳
如果您想知道默认的外壳程序
echo $SHELL
或
set | grep SHELL=
如果您想可靠地了解当前的外壳
ps -p $$
或者,如果您只想使用shell名称,
ps -p $$ | awk "NR==2" | awk '{ print $4 }' | tr -d '-'
您可能只是将最后一个放在函数中供以后使用,只知道它仅在源于当前shell的情况下可用。
whichShell(){
local defaultShell=$(echo $SHELL | tr -d '/bin/')
echo "Default: $defaultShell"
local currentShell=$(ps -p $$ | awk "NR==2" | awk '{ print $4 }' | tr -d '-')
echo "Current: $currentShell"
}
调用方法以查看结果
whichShell