我想使用 screen 使 ssh 会话在我的服务器上保持活动状态。如果我可以在登录时为我的用户自动恢复任何正在运行的会话,那就太好了。这样做的直接方法是将“screen -r”添加到我的 .bashrc 中,这似乎工作正常。我只是想知道这是否会在我尚未测试的条件下破坏任何东西。任何有经验的人都可以告诉我这是否是我应该做的?
以下是我从演讲中记下的:
.bashrc在您的主目录中查找文件vi .bashrc 问题是.bashrc我的主目录中没有文件。.bash_history我家只有一个文件。
如果我转到根目录,那里有一个etc/bash.bashrc文件,但我认为它会对所有用户进行更改,而不仅仅是对我。我想为自己添加这条路径。应该不会影响到其他人。$PATH那个 bashrc 文件中也没有变量,所以我更加困惑。
有没有办法使 bash 提示动态化,以便在登录服务器时改变颜色?
所以我希望在我的系统上颜色为绿色,并在连接到服务器时更改为红色。我有大量的服务器,我不想.bashrc在所有这些服务器上添加不同的内容。
在我的 ubuntu 系统上启动 bash 大约需要 2 秒。如果我删除 .bashrc 中的加载 /etc/bash_completion 它会立即启动。当然,我不想放弃完成,我不认为加载该文件是延迟 2 秒的正当理由。
任何想法如何找出问题所在或如何加快速度。
我如何在 bash 的命令行上指定一个命令,该命令应在读取 ~/.bashrc 后在新 bash 中执行一次——但是所有这些都不让 bash 在命令完成后退出?
我正在摆弄终止符的“启动配置”,其中一些拆分应该在启动后启动一些应用程序(vim、mutt、irrsi)。但是我仍然希望在后台使用正常的外壳(ctrl-z 等等...)所以在退出应用程序后,我拥有与电子应用程序生命周期相同的外壳...
什么对我不起作用(基于给定的答案)
( bash; vim ) # vim waits for the exit of bash...
bash -c vim # bash exits after vims exit...
bash -c 'vim; exec bash' # bash is executed _after_ vim... ctrl-z won't work
echo vim | bash -s # "Vim: Warning: Input is not from a terminal"
Run Code Online (Sandbox Code Playgroud)
手动将“vim”附加到临时 bashrc 也不起作用。vim 正确启动,但仍然没有 ctrl-z 将我带到的背景 bash。
有什么建议?
我想解决这个常见问题,远程服务器上的 shell 认为我的终端的退格键是^?,有时它认为是^H,并且碰巧不正确并在我按下退格键时输出错误的字符。如果我将其设置为 ^H 或 ^?用stty erase ^H或stty erase ^?在我的.bashrc文件,并使用一些其他的终端访问服务器,它往往最终是错误的。所以stty erase [whatever]当我发现退格键错误时,我不得不手动输入来修复它。
我想要做的是同时绑定^?和^H退格,因为如果我能做到这一点,我可以将它添加到我所有的 .bashrc 文件中,它肯定会结束这场噩梦。这可能吗?如果是这样,如何?
这个函数存在于我的一个用户的 ~/.bashrc 中:
function rm()
{
ls $*
echo "rm?"
read ans
if [ "$ans" == 'y' ]; then
/bin/rm $*
fi
}
Run Code Online (Sandbox Code Playgroud)
在我要求用户运行的 ksh 脚本中,我有这样一行:
[[ "$KEEP" = "" ]] && \rm $FILE
Run Code Online (Sandbox Code Playgroud)
虽然反斜杠转义用户定义的别名,但它不会阻止脚本运行具有相同名称的用户定义函数。结果,我的用户的 rm() 函数被调用而不是系统函数。
我发现了这个超级用户问题问题和回复,但该解决方案仅适用于内置函数,而不适用于系统命令。
强制调用 rm 命令而不是别名或函数的最佳方法是什么?我是否必须指定 rm 的完整路径以及我想确保正确执行的每个系统命令?有没有更好的办法?
我想在PuTTY 中使用日光化配色方案。棘手的部分是我在这台机器上没有管理员权限。所以我必须通过更改设置 > 窗口 > 颜色手动更改默认颜色。
我正在寻找带有日晒RGB颜色和PuTTY颜色名称的对应表:
我也接受任何比 PuTTY 的默认配色更好的配色方案......
编辑:
一个更明智的方法是勾选所有的框Settings -> Windows -> Colour,然后在远程机器中添加该行
export TERM=xterm-256color
Run Code Online (Sandbox Code Playgroud)
或者
export TERM=xterm
Run Code Online (Sandbox Code Playgroud)
以~/.bashrc和创建文件~\.Xresources与Solarized配色方案。
当我输入一个例如。在我的.bashrc文件中添加了一个新别名我无法立即在该终端窗口中使用它,直到最近我认为我必须重新启动终端才能重新加载.bashrc文件。然后我在某处发现如果我写
. .bashrc
Run Code Online (Sandbox Code Playgroud)
这将.bashrc在当前窗口中重新加载文件,我不必重新启动。这对鳍有效,但实际发生了什么?为什么这会重新加载.bashrc文件?
我注意到,当我使用ssh <host> <command>语法直接在 SSH 主机上运行命令时,我看到的是输出,.bashrc但没有看到.bash_profile(或.profile)的输出。
例如,如果我将以下命令放在两个文件的顶部,
echo ${BASH_SOURCE[0]}
Run Code Online (Sandbox Code Playgroud)
和手动来源.bash_profile(.bashrc依次来源),我会看到
$ . .bash_profile
.bash_profile
.bashrc
Run Code Online (Sandbox Code Playgroud)
这与我使用ssh <host>命令的形式通过 SSH 远程登录到这台计算机时看到的输出相同。(如果我.bash_profile暂时存放在其他地方,这两行都不会得到回应。)
但是,如果我直接在远程机器上以ssh <host> <command>形式执行命令ssh,则输出如下所示:
$ ssh <host> echo foo
/home/rlue/.bashrc
foo
Run Code Online (Sandbox Code Playgroud)
我的理解是,之间的区别.bash_profile,并.bashrc就在于前者是登录shell而后者则是互动的,非登录shell。
我得出了以下结论:
ssh <host>仅来源.bash_profile,而ssh <host> <command>仅来源.bashrc,这意味着这些结论是否正确?为什么被ssh <host> <command>视为交互式、非登录 shell?SSH不是还在登录远程机器执行命令吗?
bashrc ×10
bash ×7
linux ×4
shell ×2
ssh ×2
terminal ×2
alias ×1
boot ×1
colors ×1
command-line ×1
debian ×1
gnu-screen ×1
ksh ×1
performance ×1
putty ×1
solarized ×1
terminator ×1
ubuntu ×1