我想我会写一个bash脚本来设置我经常使用的别名,并更改命令promt。
下面是我的脚本。
#!/bin/bash
# Make useful aliases
alias c='clear'
alias p='pwd'
alias d='pwd'
alias l='ls -l'
alias clp='clear;pwd'
# Prompt
PS1='unix % '
# Echo to check if script runing
echo 'Hello world'
但是当我运行此脚本时(在授予其执行权限后),不会添加别名。提示也不会更新为 PS1 给定的值。尽管如此,它还是会回显Hello world
,所以看起来脚本正在运行。
user $ ./myEnv.sh
Hello world
user $ d
d: command not found
user $
错误在哪里?
答案1
脚本很容易在自己的环境中创建这些变量。然后,当退出时,该特定环境将被破坏,您将返回到父 shell 的环境,其中这些变量未按您想要的方式设置。
您应该像这样获取它,而不是执行它. myEnv.sh
答案2
该脚本将在其自己的实例中创建别名。该别名在另一个或父 bash 实例中不可用。此外,提示符仅在该特定 bash 实例中更改。
答案3
正如其他人所说,如果您希望别名和更改的环境变量等内容生效,则应该获取脚本。
然而,这样做的缺点是,虽然您可以在路径中执行脚本,但不能以这种方式获取脚本;这意味着每次您想要包含别名时,都必须指定完整路径。这可能有点烦人。
为了避免这种情况,您必须使用~/.bashrc
.启动时,当交互运行时,bash shell 将获取该文件自动地,因此,如果您在该文件中定义别名,那么从那时起,它们将在所有(新启动的)shell 中可用。
如果您不希望别名总是可用,那么您可以创建一个功能在你的~/.bashrc
:
addaliases() {
alias c='clear'
alias p='pwd'
# ... and so on
}
现在,下次启动 bash 时,您可以addaliases
从命令行运行,然后将添加别名。
如果您不使用 bash 但使用其他 shell,那么显然您不应该将其放在 中~/.bashrc
,而是放在另一个文件中;哪一个完全取决于您所使用的具体外壳。