带有检查目录的Linux别名

带有检查目录的Linux别名,linux,bash,Linux,Bash,我如何做别名检查我是否在目录“python27”中,当它不在时,它将转到该目录,运行一些脚本并返回主目录?当我在“python27”目录中时,它应该只运行脚本并返回主目录。我的意思是这样的: alias p="if [ pwd != /home/myname ] then cd python27 && python $1 && cd ~ else python $1 && cd ~ fi" 不要使用别名,而是使用函数 你不需要检查你是否在pyth

我如何做别名检查我是否在目录“python27”中,当它不在时,它将转到该目录,运行一些脚本并返回主目录?当我在“python27”目录中时,它应该只运行脚本并返回主目录。我的意思是这样的:

alias p="if [ pwd != /home/myname ] then cd python27 && python $1 && cd ~ else python $1 && cd ~ fi"

不要使用别名,而是使用函数

你不需要检查你是否在
python27
目录下,只要
cd
在那里,运行脚本,然后
cd
回家

类似于此,只需很少的检查:

p() {
    if [[ -z $1 ]]; then
        echo >&2 "need an argument"
        return 1
    fi
    if ! cd /full/path/to/python27; then
        echo >&2 "can't cd to python27"
        return 1
    fi
    python "$1"
    cd ~
}

如果需要传递更多参数(例如,选项),您也可以使用
python“$@”
而不是
python“$1”

我应该在何处编写此函数?@user6390359:直接在终端中(这仅对该会话有效);或者将其粘贴到
.bashrc
文件的末尾:然后每次打开新终端时都会加载它。