一开始这有点好笑,就像玩“Bash Roulette”……但现在它变老了,哈哈
我的终端中以非零代码退出的任何命令都会关闭我的终端窗口
有人告诉我,也许我已经set -e在我的终端来源的某个地方设置了一些 bash 脚本。
我已经检查.bash_profile/ .bashrc/.profile它看起来不像set -e是在那里。
还会有其他明显的罪魁祸首吗?
我已经定制.bashrc了一些别名,特别是ll和export LS_OPTIONS='--color=auto'
不幸的是,这在与 一起使用时不起作用sudo,所以我也修改了/root/.bashrc,但这似乎没有任何区别。
sudo env显示HOME=/root和SHELL=/bin/bash
如何获取sudo命令以使用 中的设置/root/.bashrc?
我知道这仅在bash以交互方式执行时才会发生,因此我愿意接受有关如何自定义的任何其他建议。
我有一个非常奇怪的案例...如果我使用 /bin/bash 运行脚本,它甚至无法识别我在脚本中设置的别名。而最奇怪的是
$ cat -n test.sh
1 #!/bin/bash
2 alias somecommand='ls -alF'
3 alias
4 somecommand
$ ./test.sh
alias somecommand='ls -alF'
./test.sh: line 4: somecommand: command not found
Run Code Online (Sandbox Code Playgroud)
...如上所示,如果我在脚本中运行命令“alias”,结果是 bash 将somecommand带入了别名,但是如果我运行somecommand本身,它仍然不会被识别!
如果我使用命令“sh”来运行脚本,一切正常..那么它是 bash 的错误吗?或者有什么我想念的吗?
任何帮助表示赞赏!
我想在bash -c构造中运行别名。
该bash手册说:
当 shell 不是交互式时,别名不会被扩展,除非
expand_aliasesshell 选项是使用设置的shopt
在这个例子中,为什么显式hi设置时找不到别名expand_aliases?
% bash -O expand_aliases -c "alias hi='echo hello'; alias; shopt expand_aliases; hi"
alias hi='echo hello'
expand_aliases on
bash: hi: command not found
Run Code Online (Sandbox Code Playgroud)
我在跑GNU bash, version 5.0.0(1)-release (x86_64-pc-linux-gnu)。
上下文:我希望能够以空闲优先级运行别名,例如包含以下内容的脚本:
#!/bin/bash
exec chrt -i 0 nice -n 19 ionice -c 3 bash -c ". ~/.config/bash/aliases; shopt -s expand_aliases; $(shell-quote "$@")"
Run Code Online (Sandbox Code Playgroud)
我想避免使用,bash -i因为我不想.bashrc被阅读。
我有一个命令的别名(我正在设置 Python 开发环境)
alias python=~/virtualenv/bin/python
Run Code Online (Sandbox Code Playgroud)
这样我~/virtualenv/bin/python只需输入python. 现在在我的项目中有一个 shell 脚本,例如:
#!/bin/sh
python run-project.py
Run Code Online (Sandbox Code Playgroud)
我可以让脚本使用我的别名python而不是python它在 中找到的别名$PATH,而不对脚本进行更改吗?