标签: bashrc

我想我不小心删除了PATH变量

无论我尝试运行什么,我都会收到错误消息:

The command could not be located because '/usr/bin' is not included in the PATH environment variable.
Run Code Online (Sandbox Code Playgroud)

我在我的 .bashrc 文件中做了一些修改,但后来删除了另外两行。然而不知何故 PATH 变量似乎已被破坏。

bashrc

9
推荐指数
2
解决办法
2万
查看次数

~/bin 如何添加到我的路径中?

我没有将 ~/bin 添加到我的任何 .bash* 文件中。但是, $PATH 确实列出了该目录。

我在 Ubuntu 特定的 StackExchange 中问这个问题的原因是,我在 Fedora 和 Ubuntu 机器上都有完全相同的 .bashrc、.bash_profile 和 .bash_aliases(事实上,我在 Dropbox 上有它们并在 ~ 中进行了符号链接)和在我的 Fedora 机器中,没有添加 ~/bin。

换句话说,如果我通过在 .bashrc 中创建一个条目将 ~/bin 添加到我的路径中,它会在 Fedora 上出现一次,在 Ubuntu 上出现两次。

~/bin 在哪里添加到我的路径中?

bashrc

8
推荐指数
1
解决办法
1万
查看次数

我在哪里可以找到默认的 /etc/bash.bashrc 文件的内容?

我不小心覆盖了/etc/bash.bashrc文件。

请给我要恢复的文件中的默认内容,或文件本身。

bashrc

8
推荐指数
2
解决办法
1万
查看次数

如何将 bash 提示的当前路径缩短为每个目录一个字母?

我不记得在哪里,但我已经看到 bash 提示的当前路径以一种有趣的方式缩短了:路径中包含的每个目录(最后一个除外)仅被其第一个字母替换。例如:path/to/some/directory将缩短为p/t/s/directory.

我怎样才能重现这种行为?

command-line bash prompt bashrc

8
推荐指数
1
解决办法
6384
查看次数

如果不以交互方式运行,为什么默认 .bashrc 设置为立即返回?

在 Ubuntu 默认 .bashrc 中有这个:

# If not running interactively, don't do anything
[ -z "$PS1" ] && return
Run Code Online (Sandbox Code Playgroud)

有谁知道为什么会这样?如果 shell 以非交互方式运行,那么 bashrc 中是否有某些东西无法运行?

bash bashrc

8
推荐指数
1
解决办法
1991
查看次数

如何在 bash 提示中更改颜色

我已按照此处和此处提供的操作方法链接中的说明进行操作。但是似乎没有任何地方说明我如何更改不同部分的颜色,因为目前我将其设置为:

PS1='${debian_chroot:+($debian_chroot)}[\t] \u@\h:\w\$ '
Run Code Online (Sandbox Code Playgroud)

但是文字还是全白的,我怎么可能把时间的数字变成绿色,而我的用户名和计算机名变成蓝色?我正在运行 Ubuntu GNOME 15.04。

configuration command-line bash bashrc

8
推荐指数
2
解决办法
1万
查看次数

使用 su -c 时哪些文件是来源?

语境

您正在使用 Ubuntu LTS 14.04。您以 root 用户身份登录。您运行以下命令:

exec su simple_user -c "/bin/bash /etc/init.d/simple_user_service"
Run Code Online (Sandbox Code Playgroud)

以便“simple_user_service”以“simple_user”权限而不是root权限启动。

题

似乎“exec su simple_user -c”不为新的交互式shell终端提供.bashrc、.profile或任何其他通常来源的文件。我通过在 simple_user .bashrc 文件中添加这一行来确认:

export TEST="Hello"
Run Code Online (Sandbox Code Playgroud)

然后在我的“simple_user_service”初始化脚本中:

#!/bin/bash
### BEGIN INIT INFO
# Provides:             test_script
# X-Interactive:        true
# Short-Description:    Test script
### END INIT INFO

echo $TEST
Run Code Online (Sandbox Code Playgroud)

当我执行脚本时,没有打印任何内容,但是如果我执行以下命令:

su simple_user
echo $TEST
> Hello
Run Code Online (Sandbox Code Playgroud)

TEST 变量已正确设置和打印。

所以我想知道:“exec su simple_user -c”命令是否提供任何 simple_user 配置文件/bashrc 文件?如果是这样,有没有办法知道哪些?

非常感谢你的帮助!

[编辑 - 2 小时后]

感谢我收到的答案,我更准确地理解了“man bash”指令。我找到了这个:

   When bash is started non-interactively, to run a shell script, for …
Run Code Online (Sandbox Code Playgroud)

command-line bash root bashrc su

8
推荐指数
1
解决办法
3866
查看次数

--init-file 和 --rcfile 有什么区别?

我一直在使用 bash,我遇到了--rcfile和--init-file选项。Bash 的手册页在同一部分列出了这些,但它们的行为似乎不同。考虑以下场景:

我创建了一个~/.bash_profile具有以下命令的:

exec env -i <variables> /bin/bash <option> ~/.bashrc
Run Code Online (Sandbox Code Playgroud)

用于需要终端以特定配置打开的项目;它被指示不要读取/etc/bash.bashrc,而是只读取~/.bashrc. 如果<option>是--init-file,~/.bashrc则读取没有错误。然而,--rcfile在它的位置似乎没有来源文件。

这两个看似相同的命令有什么区别?

bash bashrc

8
推荐指数
1
解决办法
6046
查看次数

如何在终端启动时正确启动 tmux?

我已经使用这个片段在终端启动时启动 tmux:

# TMUX startup
if command -v tmux>/dev/null; then
 [[ ! $TERM =~ screen ]] && [ -z $TMUX ] && exec tmux
fi
Run Code Online (Sandbox Code Playgroud)

但是有了这个,我不能在没有关闭终端屏幕的情况下退出 tmux。

我试过了:

Ctrl + b :detach

exit

并寻找PID并杀死它。所有这些方法也关闭了终端。

我应该如何配置 tmux 在启动终端时启动,但仍然能够在不关闭终端的情况下关闭它?任何提示表示赞赏!

command-line bash shortcut-keys tmux bashrc

8
推荐指数
1
解决办法
1847
查看次数

当终端打开时,我可以显示当前的日历和时间吗?

当按Ctrl+ Alt+T打开终端时,我会看到一个带有简单输入提示的空白屏幕。

是否可以(通过修改~/.bashrc)显示当前日历,突出显示今天和当前时间?

如果时间可以以大量显示(使用 figlet?),那将是一个奖励。

command-line bash bashrc

7
推荐指数
1
解决办法
1670
查看次数

标签 统计

bashrc ×10

bash ×7

command-line ×5

configuration ×1

prompt ×1

root ×1

shortcut-keys ×1

su ×1

tmux ×1