在linux终端上去掉./直接运行a.out 和修改用户名

本文介绍了如何在Linux终端中进行实用操作,包括临时和永久修改PATH环境变量以方便执行文件,以及如何个性化修改提示符显示用户名和主机名。此外,还提供了在深度系统中使用nmtui设置系统主机名的方法。

@[
1.临时去掉则在终端输入 export PATH=PATH :.
2. 在当前路径下就可直接省略./ 直接运行可执行文件。
3如果需要永久保存,需要修改bath脚本,在终端下输入 vi ~/.bashrc
4.在bash脚本的最后输入 PATH=PATH:.
5.按Esc退出编辑命令再输入:wq 保存退出
6.重新进入终端运行可执行文件就直接输入可执行文件名字即可。
(去掉./ 运行可执行文件)

  1. 修改用户名和主机名称
  2. vi ~/.bashrc
  3. PS1='KaTeX parse error: Expected '}', got 'EOF' at end of input: …ebian_chroot:+(debian_chroot)}[\033[01;32m]ch@\h[\033[00m]:[\033[01;34m]\w[\0 33[00m]$ ’
    61 else
    62 PS1='KaTeX parse error: Expected '}', got 'EOF' at end of input: …ebian_chroot:+(debian_chroot)}ch@\h:\w$ ’

修改32m]\u@\h 是原始自带的,\u为用户名 \h为主机名称
把 PS1 中的\u@\h 改为自己想要的就行。
深度系统中 ,在终端,输入 nmtui
移动光标到 set system hostname
输入新机器名
在这里插入图片描述

<think>好的,用户问为什么在Linux虚拟机中输入~/.ssh会自动更改为/home/用户名/.ssh。首先,我需要确定用户对Shell的路径扩展是否了解。波浪号(~)在Linux中代表当前用户的主目录,所以当用户输入~/.ssh时,Shell会自动将其扩展为绝对路径,比如/home/username/.ssh。这可能让用户感到困惑,特别是如果他们不熟悉Shell的路径扩展机制。 接下来,我需要考虑用户的使用场景。用户可能是在尝试访问或操作SSH相关文件,比如配置公钥或者检查known_hosts。他们可能在执行命令时注意到了路径的变化,不确定这是正常行为还是配置错误。此外,用户可能在使用命令行时不太熟悉环境变量路径扩展,导致他们对此产生疑问。 用户的真实需求可能是想了解这种现象的原因,确认这是否正常,以及是否需要采取任何措施。他们可能担心路径被错误替换,影响他们的操作,比如在脚本中使用~/.ssh导致问题。此外,用户可能希望了解如何在不同的情况下正确使用波浪号,或者如何避免不必要的扩展。 我需要解释波浪号在Shell中的作用,以及为什么会有这种替换。同时,要指出在不同上下文中,如脚本或某些命令中,波浪号可能不会被扩展,这时候需要使用绝对路径或环境变量。还要提到转义字符的方法,以防用户需要保留波浪号的字面意义。最后,可能需要给出一些示例,帮助用户理解何时会发生替换,以及如何处理这种情况,确保他们的操作正确无误。 另外,用户可能是在特定的虚拟机环境中遇到这个问题,需要确认是否有特殊配置导致这种现象,但一般情况下这是标准Shell行为,所以重点应放在Shell的路径扩展机制上。还要提醒用户注意权限问题,确保.ssh目录的权限正确,避免安全问题。可能用户之后会涉及到SSH配置,所以补充相关的注意事项也是有帮助的。</think>在 Linux 系统中,当你输入路径 `~/.ssh` 时,Shell(命令行解释器)会自动将波浪号 `~` 展开为**当前用户的主目录绝对路径**,例如 `/home/用户名/.ssh`。这是 Shell 的默认行为,属于路径扩展(Tilde Expansion)功能。 --- ### **一、核心原因** 1. **波浪号 `~` 的默认含义** - `~` 是 Shell 的保留符号,直接等价于当前用户的主目录(即 `$HOME` 环境变量指向的路径)。 - 例如: ```bash echo ~ # 输出 /home/用户名 echo ~/.ssh # 输出 /home/用户名/.ssh ``` 2. **扩展行为依赖 Shell 环境** - 此行为由 Shell(如 Bash、Zsh)实现,而非 Linux 文件系统本身。 - 在脚本或某些程序(如 `find`、`sed`)中直接使用 `~` 时,若未经过 Shell 解释,可能不会自动扩展(需手动替换为 `$HOME`)。 --- ### **二、扩展规则详解** #### 1. **基本扩展** - `~` → 当前用户的主目录(如 `/home/用户名`)。 - `~用户名` → 指定用户的主目录(如 `~root` 展开为 `/root`)。 #### 2. **常见场景** - **命令参数中的路径** ```bash ls ~/.ssh # 实际执行 ls /home/用户名/.ssh cp file.txt ~/doc # 复制到 /home/用户名/doc ``` - **配置文件中使用 `~`** 某些程序(如 Git)支持 `~` 扩展,但需注意: ```bash # 在 Git 配置中,以下写法等效 git config --global core.sshCommand "ssh -i ~/.ssh/id_rsa" git config --global core.sshCommand "ssh -i $HOME/.ssh/id_rsa" ``` --- ### **三、为什么“看到”路径被替换?** 1. **Shell 的预处理机制** - 在命令执行前,Shell 会先解析并替换所有特殊符号(如 `~`、`$变量`、`*` 通配符等)。 - 输入 `~/.ssh` 后按回车时,Shell 已将其替换为绝对路径,因此终端显示或程序接收的实际参数是展开后的路径。 2. **验证扩展行为** - 使用 `echo` 命令观察扩展结果: ```bash echo ~/.ssh # 输出 /home/用户名/.ssh ``` - 通过 `set -x` 启用调试模式,查看命令执行前的展开过程: ```bash set -x ls ~/.ssh set +x ``` --- ### **四、需要留意的特殊情况** #### 1. **引号的影响** - **双引号 `" "`**:允许变量扩展,但会保留通配符(如 `*`)的字面意义。 ```bash echo "~/.ssh" # 输出 ~/.ssh(未扩展) echo "$HOME/.ssh" # 输出 /home/用户名/.ssh(变量仍会扩展) ``` - **单引号 `' '`**:禁止所有扩展。 ```bash echo '~/.ssh' # 输出 ~/.ssh ``` #### 2. **需要禁用扩展时** - 若需保留 `~` 的字面意义(如写入配置文件),需用引号包裹或转义: ```bash # 示例:在 JSON 文件中保留 ~ echo '{ "key": "~/.ssh/id_rsa" }' > config.json # 转义符号 echo \~/.ssh # 输出 ~/.ssh ``` --- ### **五、扩展行为的实际意义** 1. **简化路径输入** 无需记忆或输入完整的绝对路径,提高命令行操作效率。 2. **跨用户环境的兼容性** 使用 `~用户名` 可快速访问其他用户的主目录(需权限允许): ```bash ls ~otheruser/.ssh # 查看其他用户的 .ssh 目录 ``` 3. **脚本中的可移植性** 在脚本中使用 `~` 或 `$HOME` 替代硬编码路径,使脚本适配不同用户环境。 --- ### **总结** - **现象本质**:`~/.ssh` 被替换为 `/home/用户名/.ssh` 是 Shell 的**路径扩展功能**,属于正常行为。 - **扩展规则**:`~` 默认指向当前用户的主目录,可通过 `~用户名` 访问其他用户目录。 - **注意事项**:在脚本或配置文件中,需根据需求决定是否使用引号或转义符控制扩展行为。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值