cha*_*ons 29 macos bash shell command-line
我刚刚找到一个解决方法,解决了在安装了MacPorts版本的python时,Sublime Text 3 的命令问题subl.说明将软链接放到ln-s/ bin中的命令行应用程序中.这没用,所以我刚打开了我的〜/ .profile并添加了一个别名:
alias subl="/Applications/path/to/subl".但这对我来说是一个新问题.这两者有什么区别:别名和软链接?
Kei*_*son 27
它们是完全不同的东西,但在这种情况下它们可以用于类似的目的.
这个:
alias subl="/Applications/path/to/subl"
Run Code Online (Sandbox Code Playgroud)
创建别名,因此键入sublshell命令等同于键入/Applications/path/to/subl.
在bash中,函数通常比别名更受欢迎,因为它们更灵活,更强大.
subl() { /Applications/path/to/subl ; }
Run Code Online (Sandbox Code Playgroud)
这两件事都是针对shell的; 它们使shell扩展sub1为指定的命令.
ln -s另一方面,在文件系统中创建一个符号链接.符号链接是对另一个文件的引用,对于大多数用途,它可以被视为文件本身.它适用于访问它的任何东西,而不仅仅是shell,它对系统上运行的所有进程立即可见,并且一直持续到它被删除.(符号链接实现为包含目标文件名称的小型特殊文件.)
Dav*_* W. 25
Alias是Macintosh Finder的概念.在Finder中创建别名时,Finder会跟踪它.移动原始文件或文件夹时,别名会跟随它.
符号链接是Unix文件系统概念.当您创建符号链接时,它仅指向原始位置.移动原始,符号链接将无处可寻.
当您使用Mac应用程序并使用"打开/保存"对话框时,它将处理别名,因为它使用Finder API,而Finder处理别名跟踪.
Unix工具不与Finder API集成,因此无法跟踪别名.但是,它们使用处理符号链接的底层Unix API.您可以ls在符号链接上使用,因为它使用Unix API.与Python相同.
回到System 7/8/9天,文件系统无法处理符号链接,就像Windows API使用快捷方式而不是符号链接一样.你需要别名.
但是,Mac OS X是基于Unix的操作系统,因此理解符号链接的概念.Finder现在将符号链接视为别名(除了原始移动时符号链接不会更新).别名的唯一原因是与旧的Finder文件系统兼容.
小智 6
这真是一个超级问题
在这场辩论中有3个级别的别名
一些不同的用例:
我个人经常使用ln -s ..
我也使用Finder制作别名.它很容易,链接跟随项目,因为他们更多.但它不能用bash工作- 因此,当我需要开始编写脚本时,我有时会将这些链接更改为**ln -s ...*.