如何列出所有变量名称及其当前值?
不仅包括$HOME
, $PWD
etc 还包括您定义的任何其他。
设置PATH
envvar的首选位置在哪里?
~/.profile
或者/etc/environment
?
PATH
在两个地方都设置时是什么情况?最终结果是在这两个地方设置的两个值的串联吗?
我是 Ubuntu 的新手。我正在运行 13.10 桌面版。
我想为 bash 设置一些系统范围的别名和自定义提示。我找到了这篇文章:
https://help.ubuntu.com/community/EnvironmentVariables
按照本文中的建议,我创建了 /etc/profile.d/profile_local.sh。它归 root 所有,并且与那里的其他脚本一样具有 644 的权限:
root@ubuntu:/etc/profile.d# ll
total 28
drwxr-xr-x 2 root root 4096 Mar 23 08:56 .
drwxr-xr-x 135 root root 12288 Mar 23 09:15 ..
-rw-r--r-- 1 root root 660 Oct 23 2012 bash_completion.sh
-rw-r--r-- 1 root root 3317 Mar 23 07:36 profile_local.sh
-rw-r--r-- 1 root root 1947 Nov 23 00:57 vte.sh
Run Code Online (Sandbox Code Playgroud)
我进一步确认 /etc/profile 调用 /etc/profile.d。它包含以下代码块:
if [ -d /etc/profile.d ]; then
for i in /etc/profile.d/*.sh; do
if …
Run Code Online (Sandbox Code Playgroud) Bash shell 中可以使用很多函数。它们的定义可以由 列出set
,但是如何找到某些用户定义的函数是在哪些文件中定义的呢?
我已经读过这篇关于在哪里放置别名的帖子。
现在,假设我的自定义命令非常复杂(在输入中接受参数,由几个相继运行的命令组成,为了清楚起见,我想将其保留为多行,涉及引号、双引号等),所以我想将它定义为一个函数,例如
sshdev_system_loop () {
while true; do
echo "[$(date +'%Y-%m-%d %H:%M:%S')] Trying to log into ststem $2 as user $1 ."
timeout 10 ssh $1@$2
done
}
Run Code Online (Sandbox Code Playgroud)
我应该把它放在.bash_aliases
或 的末尾.bashrc
或 中.profile
吗?
一方面,我不想把它放进去,.bash_aliases
因为它会“破坏”列表
alias alias_name='command/list of commands'
Run Code Online (Sandbox Code Playgroud)
另一方面,.bashrc
它看起来像是操作系统管理的文件,所以我不想向其中添加内容。
那么在 Ubuntu 中将功能添加为自定义命令的最佳实践是什么?
我知道,终端可以通过启动Ctrl+ Alt+ T。但有时用户说关于使用命令行Ctrl+ Alt+ F2。
那么,他们之间的工作有什么区别吗?我什么时候应该在它们之间使用?
什么叫做tty?
Shell 可以像由文本控制台运行的那样登录,也可以像由 Gnome 终端运行的那样非登录。为什么需要这种复杂性?为什么登录 shell 不能遵循与非登录相同的规则?
虽然我知道该source
命令在当前 shell 中执行程序,但我不太明白为什么我们需要运行source .bashrc
来“重新加载”.bashrc 文件。
根据我的理解,我们不会通过向 .bashrc 添加别名来运行任何脚本 - 我们source .bashrc
只是“重新加载”文件。
为什么不自动重新加载?
也许,我错过了一些东西。
它在幕后是如何工作的?为什么我们需要source
这个文件来让新别名在不注销的情况下工作?
正如标题所示,我在询问 .bashrc 和 /etc/profile 之间的主要区别。我所知道的是 .bashrc 是一个在登录时运行的 shell 脚本(我猜)。我也知道 /etc/profile 是在 ssh 登录或终端登录上运行的。有人可以在这里引导我朝着正确的方向前进吗?
我目前的理解是每次打开新终端时都会运行添加到这两个文件的命令。那是对的吗?因为在很多地方,我看到建议将我想在登录时执行的命令放在那里,但是如果每次打开新终端时都执行它们,那么我不希望那样。你能帮我理解它们是如何工作的吗?还有它们之间有什么区别?
如果我理解正确,那么我可以在哪里放置我只想在登录时执行的命令,而不是每次打开新终端时执行的命令?我知道我可以从“启动应用程序”的 GUI 执行此操作,但如果可能,我有兴趣在文件中执行此操作。